Что такое Неправильный со следующим кодом?Python: вложенный класс со статическим методом не работает
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
Edit:
решение было простым, как это:
class A:
def A_M(self): pass
class B:
@staticmethod
def C(): A().A_M() #use of A() instead of supper, etc.
Важное примечание, что есть вопрос с этим решением. Если вы измените имя суперкласса (т. Е. A
), вам придется обновлять все виды использования внутри себя как A
:)).
Почему вы думаете, что хотите вложенный класс? В Python почти нет причин для этого. –
_ «Если вы измените имя суперкласса (то есть A), вам придется обновлять все виды использования внутри себя как« _ - ** Это не то, что означает _super class_ ** – Eric