Уведомления

Группа в Telegram: @pythonsu

#1 Март 8, 2017 22:37:08

Djo0513
Зарегистрирован: 2016-09-02
Сообщения: 92
Репутация: +  0  -
Профиль   Отправить e-mail  

Зачем писать self.name = name, а после использовать self.name вместо name?

У некоторых людей в коде замечаю такие строки
self.name = name
self.name = 2
Зачем писать вообще self.name = name если name даже не используется?
И ещё: когда мы пишем self.name = name, а после пишем self.name = 2, то почему у нас не пропадает этот name?



Лучший учитель - это ты сам.

Офлайн

#2 Март 8, 2017 23:38:36

4kpt_V
От: Харьков
Зарегистрирован: 2017-02-19
Сообщения: 299
Репутация: +  12  -
Профиль   Отправить e-mail  

Зачем писать self.name = name, а после использовать self.name вместо name?

Приводите код. Без кода никто и ничем помочь не сможет. Но вообще. Объявление self.что_то дает возможность в объекте (экземпляре класса) его использовать. Также можно назначить или изменить этот атрибут извне. Еще прочитать значение.

Офлайн

#3 Март 9, 2017 13:57:09

Rodegast
От: Пятигорск
Зарегистрирован: 2007-12-28
Сообщения: 2683
Репутация: +  182  -
Профиль   Отправить e-mail  

Зачем писать self.name = name, а после использовать self.name вместо name?

 У некоторых людей в коде замечаю такие строки
self.name = name
self.name = 2
Такое чувство что код просто не отрефакторили. Если хотите что-то конкретного, то исходник в студию.



С дураками и сектантами не спорю, истину не ищу.
Ели кому-то правда не нравится, то заранее извиняюсь.

Офлайн

#4 Март 9, 2017 14:01:21

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Зачем писать self.name = name, а после использовать self.name вместо name?

Rodegast
Такое чувство что код просто не отрефакторили.

Думаю, имелось в виду такое
 def __init__(self, name)
    self.name = name



Офлайн

#5 Март 9, 2017 15:54:49

Djo0513
Зарегистрирован: 2016-09-02
Сообщения: 92
Репутация: +  0  -
Профиль   Отправить e-mail  

Зачем писать self.name = 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')

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



Лучший учитель - это ты сам.

Отредактировано Djo0513 (Март 9, 2017 16:18:11)

Офлайн

#6 Март 9, 2017 16:23:08

Rodegast
От: Пятигорск
Зарегистрирован: 2007-12-28
Сообщения: 2683
Репутация: +  182  -
Профиль   Отправить e-mail  

Зачем писать self.name = name, а после использовать self.name вместо name?

> Какой здесь смыслл введения name если оно почти не используется

Строка self.name = name в данном примере смысла не имеет, но она могла остаться из прошлого. Это и называется “не отрефакторили”.



С дураками и сектантами не спорю, истину не ищу.
Ели кому-то правда не нравится, то заранее извиняюсь.

Отредактировано Rodegast (Март 9, 2017 16:23:57)

Офлайн

#7 Март 9, 2017 16:51:50

JOHN_16
От: Россия, Петропавловск-Камчатск
Зарегистрирован: 2010-03-22
Сообщения: 3292
Репутация: +  221  -
Профиль   Отправить e-mail  

Зачем писать self.name = name, а после использовать self.name вместо name?

Очень похоже на говнокод. Думаю не стоит объяснять что на него не стоит равняться и что там что угодно может быть.
Ну и конкретно этот код не стоит того что бы его разбирать и чему то учиться. Разве что как НЕ надо делать.



_________________________________________________________________________________
полезный блог о python john16blog.blogspot.com

Офлайн

#8 Март 9, 2017 17:09:01

Djo0513
Зарегистрирован: 2016-09-02
Сообщения: 92
Репутация: +  0  -
Профиль   Отправить e-mail  

Зачем писать self.name = name, а после использовать self.name вместо name?

JOHN_16
Тогда в чём смысл написания self.что-то = что-то? С примерами если не трудно



Лучший учитель - это ты сам.

Офлайн

#9 Март 9, 2017 17:50:02

JOHN_16
От: Россия, Петропавловск-Камчатск
Зарегистрирован: 2010-03-22
Сообщения: 3292
Репутация: +  221  -
Профиль   Отправить e-mail  

Зачем писать self.name = name, а после использовать self.name вместо name?

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. Затем меняем значение переменной, но при этом значение атрибута не изменится, потому что они никак не связаны.
Тут не мне объяснять надо, а Вам брать книгу и читать. ООП это объемная тема. А это основы. Основы нужно не на форумах спрашивать, а изучать самостоятельно.



_________________________________________________________________________________
полезный блог о python john16blog.blogspot.com

Офлайн

#10 Март 9, 2017 21:48:58

Djo0513
Зарегистрирован: 2016-09-02
Сообщения: 92
Репутация: +  0  -
Профиль   Отправить e-mail  

Зачем писать self.name = name, а после использовать self.name вместо name?

JOHN_16
Я не такой тупой каким вы меня считаете, я знаю что self этт указатель на объект класса, и смысл ооп я понимаю, ваш код я тоже понял: если бы там была такая строчка foo.set_name(name) после name = ‘Alice’, то результат был бы Alice Alice а не Alice John. Тема не из лёгких, спасибо за примеры, до меня допёрло что name нужно так как это class а в классе нужно чтобы name был нужен не одному экземпляру класса а нескольким.



Лучший учитель - это ты сам.

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version