Форум сайта python.su
0
Начал изучать ООП, понял что self нужно писать со всеми методами обязательно,
но вот немного запутался, что попадает в 1й self а что во 2ой ??
Офлайн
857
Второй - это первый.
Принцип такой же:
def f(arg): print(arg.color)
Отредактировано py.user.next (Окт. 23, 2015 14:46:23)
Офлайн
0
непонятно почему именно self.color, а не просто color + ‘!’
поясните о чем нам говорить self.color
Офлайн
20
Когда вы пишете
class A: color = 'red' ...
>>>a = A() >>>b = A() >>> a.color 'red' >>> b.color 'red'
>>> A.color 'red'
>>> a = A() >>> b = A() >>> a.color 'red' >>> b.color 'red' >>> A.color = 'green' >>> a.color 'green' >>> b.color 'green' >>>
Отредактировано old_monty (Окт. 23, 2015 15:58:01)
Офлайн
61
http://wombat.org.ua/AByteOfPython/object_oriented_programming.html
Офлайн
0
ZerG
http://wombat.org.ua/AByteOfPython/object_oriented_programming.html
a =A()
Офлайн
20
Другое дело, если определить класс А так, чтобы каждый экземпляр класса А получал свой собственный цвет в момент своего создания. Тогда цвет становится индивидуальным для каждого объекта:
>>> class A: def __init__(self, color): self.color = color >>> a = A('red') >>> b = A('green') >>> a.color 'red' >>> b.color 'green'
Офлайн
0
Так вроде тоже работает
class A: color = 'red' def metod(self): print(A().color + '!') #self заменил на A() a = A() a.metod() input()
Отредактировано @Aleks@ (Окт. 23, 2015 16:22:02)
Офлайн
39
Атрибут класса является глобальным для всех экземпляров (объектов) построенных на его основании.
Проще:
class A(): a = 1 # атрибут класса def __init__(self, b): self.b = b # атрибут экземпляра класса a_I = A(2) print(a_I.a) print(a_I.b) a_II = A(3) print(a_II.a) print(a_II.b)
Отредактировано 4kpt_III (Окт. 23, 2015 16:48:04)
Офлайн
0
4kpt_IIIЭто понятно.
Атрибут класса является глобальным для всех экземпляров (объектов) построенных на его основании.Проще:
self.b = b # атрибут экземпляра класса
Отредактировано @Aleks@ (Окт. 23, 2015 17:08:30)
Офлайн