Ответ 1
Вы смешиваете атрибуты класса и экземпляра.
print self._haircolor
Я пытаюсь получить доступ к переменной-члену родителя из расширенного класса. Но запустив следующий код...
class Mother(object):
def __init__(self):
self._haircolor = "Brown"
class Child(Mother):
def __init__(self):
Mother.__init__(self)
def print_haircolor(self):
print Mother._haircolor
c = Child()
c.print_haircolor()
Получает мне эту ошибку:
AttributeError: type object 'Mother' has no attribute '_haircolor'
Что я делаю неправильно?
Вы смешиваете атрибуты класса и экземпляра.
print self._haircolor
Вам нужен атрибут экземпляра, а не атрибут класса, поэтому вы должны использовать self._haircolor
.
Кроме того, вы действительно должны использовать super
в __init__
, если вы решите изменить свое наследование на Father
или что-то в этом роде.
class Child(Mother):
def __init__(self):
super(Child, self).__init__()
def print_haircolor(self):
print self._haircolor