Что не так в следующем коде?
class A:
def A_M(self): pass
class B:
@staticmethod
def C(): super(B).A_M()
ошибка (Питон 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
:)).