无法在Python中访问父成员变量

时间:2012-04-08 17:12:58

标签: python inheritance scope

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

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'

我做错了什么?

2 个答案:

答案 0 :(得分:31)

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

print self._haircolor

答案 1 :(得分:20)

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

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

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