32

我正在尝试从扩展类访问父成员变量。但是运行以下代码...

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'

我究竟做错了什么?

4

2 回答 2

37

您正在混淆类和实例属性。

print self._haircolor
于 2012-04-08T17:15:00.857 回答
23

您需要实例属性,而不是类属性,因此您应该使用self._haircolor.

此外,如果您决定将继承更改为或其他内容,您确实应该使用super__init__Father

class Child(Mother):
    def __init__(self): 
        super(Child, self).__init__()
    def print_haircolor(self):
        print self._haircolor
于 2012-04-08T17:17:20.770 回答