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 に答える