Подтвердить что ты не робот

Невозможно получить доступ к переменной родительского элемента в Python

Я пытаюсь получить доступ к переменной-члену родителя из расширенного класса. Но запустив следующий код...

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'

Что я делаю неправильно?

4b9b3361

Ответ 1

Вы смешиваете атрибуты класса и экземпляра.

print self._haircolor

Ответ 2

Вам нужен атрибут экземпляра, а не атрибут класса, поэтому вы должны использовать self._haircolor.

Кроме того, вы действительно должны использовать super в __init__, если вы решите изменить свое наследование на Father или что-то в этом роде.

class Child(Mother):
    def __init__(self): 
        super(Child, self).__init__()
    def print_haircolor(self):
        print self._haircolor