Найти - Пользователи
Полная версия: Зачем писать self.name = name, а после использовать self.name вместо name?
Начало » Python для новичков » Зачем писать self.name = name, а после использовать self.name вместо name?
1 2 3 4 None 7 8 9 10
Djo0513
У некоторых людей в коде замечаю такие строки
self.name = name
self.name = 2
Зачем писать вообще self.name = name если name даже не используется?
И ещё: когда мы пишем self.name = name, а после пишем self.name = 2, то почему у нас не пропадает этот name?
4kpt_V
Приводите код. Без кода никто и ничем помочь не сможет. Но вообще. Объявление self.что_то дает возможность в объекте (экземпляре класса) его использовать. Также можно назначить или изменить этот атрибут извне. Еще прочитать значение.
Rodegast
 У некоторых людей в коде замечаю такие строки
self.name = name
self.name = 2
Такое чувство что код просто не отрефакторили. Если хотите что-то конкретного, то исходник в студию.
FishHook
Rodegast
Такое чувство что код просто не отрефакторили.

Думаю, имелось в виду такое
 def __init__(self, name)
    self.name = name
Djo0513
 class car:
 
 def nname(self,name):
  
  self.name = name
  self.name = input('Введите ваше имя') #Зачем использовать self.name, когда мы написали self.name = name и можно   #написать здесь print(name)
  
  print(self.name)
  
sandra =car()
sandra.nname('gloria')

Какой здесь смыслл введения name если оно почти не используется, и как правильнее использовать: name или self.name в print() и в остальных случая?
Код писал на планшете поэтому без критики пожалуйста
Rodegast
> Какой здесь смыслл введения name если оно почти не используется

Строка self.name = name в данном примере смысла не имеет, но она могла остаться из прошлого. Это и называется “не отрефакторили”.
JOHN_16
Очень похоже на говнокод. Думаю не стоит объяснять что на него не стоит равняться и что там что угодно может быть.
Ну и конкретно этот код не стоит того что бы его разбирать и чему то учиться. Разве что как НЕ надо делать.
Djo0513
JOHN_16
Тогда в чём смысл написания self.что-то = что-то? С примерами если не трудно
JOHN_16
Djo0513
вы не понимаете основ ООП я так полагаю.
Вот вам пример:
 >>> class Foo:
...     def set_name(self, name):
...          self.name = name
...
>>> name = 'John'
>>> foo = Foo()
>>> foo.set_name(name)
>>>
>>> print(name)
John
>>> print(foo.name)
John
>>>
>>> name = 'Alice'
>>>
>>> print(name)
Alice
>>> print(foo.name)
John
>>>
строчка self.name = name, означает что значение переданное в качестве аргумента метода класса, присваивается атрибуту экземпляра класса. Есть переменная name и есть атрибут name с одинаковым значением John. Затем меняем значение переменной, но при этом значение атрибута не изменится, потому что они никак не связаны.
Тут не мне объяснять надо, а Вам брать книгу и читать. ООП это объемная тема. А это основы. Основы нужно не на форумах спрашивать, а изучать самостоятельно.
Djo0513
JOHN_16
Я не такой тупой каким вы меня считаете, я знаю что self этт указатель на объект класса, и смысл ооп я понимаю, ваш код я тоже понял: если бы там была такая строчка foo.set_name(name) после name = ‘Alice’, то результат был бы Alice Alice а не Alice John. Тема не из лёгких, спасибо за примеры, до меня допёрло что name нужно так как это class а в классе нужно чтобы name был нужен не одному экземпляру класса а нескольким.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB