基本クラスから変数にアクセスしようとしています。親クラスは次のとおりです。
class Parent(object):
def __init__(self, value):
self.some_var = value
そして、これが子クラスです:
class Child(Parent):
def __init__(self, value):
super(Child, self).__init__(value)
def doSomething(self):
parent_var = super(Child, self).some_var
さて、このコードを実行しようとすると:
obj = Child(123)
obj.doSomething()
次の例外が発生します。
Traceback (most recent call last):
File "test.py", line 13, in <module>
obj.doSomething()
File "test.py", line 10, in doSomething
parent_var = super(Child, self).some_var
AttributeError: 'super' object has no attribute 'some_var'
私は何が間違っているのですか? Pythonで基本クラスから変数にアクセスするための推奨される方法は何ですか?
基本クラスの__init__
が実行された後、派生オブジェクトは、派生クラス 'some_var
のself
とまったく同じオブジェクトであるため、そこに属性が設定されます(例:__init__
)。どこでもself.some_var
を使用できます。 super
は基本クラスからのものにアクセスするためのものですが、インスタンス変数は(名前が示すように)インスタンスの一部であり、そのインスタンスのクラスの一部ではありません。
属性some_varがParentクラスに存在しません。
__init__
中に設定すると、Childクラスのインスタンスで作成されます。