私はそれに入るほどpythonに戸惑います。
たとえば、次のコード:
class A:
def __init__ (self):
self.test = "a"
def dump(self):
print("A.test: %s" % (self.test,))
print("A.test: %s" % (self.__dict__["test"],))
print("A.test: %s" % (getattr(self, "test"),))
print()
class B (A):
def __init__ (self):
self.test = "b"
def dump(self):
print("B.test: %s" % (self.test,))
print("B.test: %s" % (self.__dict__["test"],))
print("B.test: %s" % (getattr(self, "test"),))
print()
o = B ()
o.dump()
A.dump(o)
super(B, o).dump()
プリント:
B.test: b
B.test: b
B.test: b
A.test: b
A.test: b
A.test: b
A.test: b
A.test: b
A.test: b
これは、基本クラスの関数を呼び出すことができることを示しているようですが、そのクラスに派生クラスでも使用された属性がある場合、通常の object.attribute 表記を使用してこの属性にアクセスすることはできません。絶対にアクセスしてください。
それは本当に本当ですか?もしそうなら、それは殺すでしょう-IMHO-pythonオブジェクトモデル全体。