Форум сайта python.su
У некоторых людей в коде замечаю такие строки
self.name = name
self.name = 2
Зачем писать вообще self.name = name если name даже не используется?
И ещё: когда мы пишем self.name = name, а после пишем self.name = 2, то почему у нас не пропадает этот name?
Офлайн
Приводите код. Без кода никто и ничем помочь не сможет. Но вообще. Объявление self.что_то дает возможность в объекте (экземпляре класса) его использовать. Также можно назначить или изменить этот атрибут извне. Еще прочитать значение.
Офлайн
У некоторых людей в коде замечаю такие строки self.name = name self.name = 2
Онлайн
Rodegast
Такое чувство что код просто не отрефакторили.
def __init__(self, name) self.name = name
Офлайн
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')
Отредактировано Djo0513 (Март 9, 2017 16:18:11)
Офлайн
> Какой здесь смыслл введения name если оно почти не используется
Строка self.name = name в данном примере смысла не имеет, но она могла остаться из прошлого. Это и называется “не отрефакторили”.
Отредактировано Rodegast (Март 9, 2017 16:23:57)
Онлайн
Очень похоже на говнокод. Думаю не стоит объяснять что на него не стоит равняться и что там что угодно может быть.
Ну и конкретно этот код не стоит того что бы его разбирать и чему то учиться. Разве что как НЕ надо делать.
Офлайн
JOHN_16
Тогда в чём смысл написания self.что-то = что-то? С примерами если не трудно
Офлайн
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 >>>
Офлайн
JOHN_16
Я не такой тупой каким вы меня считаете, я знаю что self этт указатель на объект класса, и смысл ооп я понимаю, ваш код я тоже понял: если бы там была такая строчка foo.set_name(name) после name = ‘Alice’, то результат был бы Alice Alice а не Alice John. Тема не из лёгких, спасибо за примеры, до меня допёрло что name нужно так как это class а в классе нужно чтобы name был нужен не одному экземпляру класса а нескольким.
Офлайн