私は本当に、そのスーパークラスのサブクラスからスーパークラスのクラスメソッドへの何らかの方法を見つける必要があります。
一般化されたコードは次のとおりです。
class A(object):
def __init__(self):
print "A init"
@classmethod
def _method(cls):
print cls
return cls()
class B(A):
def __init__(self):
print "B init"
class C(B):
def __init__(self):
print "C init"
@classmethod
def _method(cls):
print "calling super(C)'s classmethod"
return super(C)._method()
c = C._method()
その結果:
Traceback (most recent call last):
File "C:/Python27x64/testclass", line 26, in <module>
c = C._method()
File "C:/Python27x64/testclass", line 22, in _method
return super(C)._method()
AttributeError: 'super' object has no attribute '_method'
から、初期化されていないクラスのclassmethodc = C._method()
を呼び出していることに注意してください。C
から、初期化されていないクラスまたは(MROをトラバースする)のclassmethodC
も呼び出します。A
B
どうすればこれを達成できますか?