Perché non è possibile utilizzare super
per ottenere un metodo della superclasse di una classe?Python: Perché non posso usare `super` su una classe?
Esempio:
Python 3.1.3
>>> class A(object):
... def my_method(self): pass
>>> class B(A):
... def my_method(self): pass
>>> super(B).my_method
Traceback (most recent call last):
File "<pyshell#2>", line 1, in <module>
super(B).my_method
AttributeError: 'super' object has no attribute 'my_method'
(Naturalmente questo è un caso banale in cui ho potuto solo fare A.my_method
, ma avevo bisogno di questo per un caso di diamante eredità.)
Secondo super
's documentazione, sembra che ciò che voglio dovrebbe essere possibile. Questa è la documentazione super
's: (enfasi mia)
super()
-> stessasuper(__class__, <first argument>)
super(type)
-> non legato oggetto Super
super(type, obj)
-> boundsuper
oggetto; richiedeisinstance(obj, type)
super (type, type2) -> bound super oggetto; richiede issubclass (tipo2, tipo)
[esempi non rilevanti redatto]
ho cancellato la mia risposta - ho ottenuto lo stesso errore. Molto strano, ci guarderemo un po 'di più. –