次のコードの 何が問題になっていますか?
class A:
def A_M(self): pass
class B:
@staticmethod
def C(): super(B).A_M()
エラー (Python 2.7.3):
>>> a = A()
>>> a.B.C()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "..x.py", line 36, in C
def C(): super(B).A_M()
NameError: global name 'B' is not defined
編集:
解決策は次のように簡単でした:
class A:
def A_M(self): pass
class B:
@staticmethod
def C(): A().A_M() #use of A() instead of supper, etc.
このソリューションには問題があることに注意してください。スーパークラスの名前を変更した場合 (つまりA
)、それ自体の内部のすべての使用をA
:)) として更新する必要があります。