¿Por qué no puedo usar super
para obtener un método de la clase superior de una clase?Python: ¿Por qué no puedo usar `super` en una clase?
Ejemplo:
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'
(Por supuesto, esto es un caso trivial en que sólo podía hacer A.my_method
, pero necesitaba esto para un caso de diamante herencia.)
Según super
's documentación, parece que lo que quiero debería ser posible. Esta es la documentación super
's: (El énfasis es mío)
super()
-> mismo quesuper(__class__, <first argument>)
super(type)
-> objeto no unido súper
super(type, obj)
-> obligadosuper
objeto; requiereisinstance(obj, type)
super (tipo, tipo2) -> límite super objeto; requiere issubclass (tipo2, tipo)
[ejemplos no relevantes redactado]
He eliminado mi respuesta - Tengo el mismo error. Muy extraño, lo investigaré un poco más. –