Quiero diferenciar los métodos heredados de los métodos sobrecargados o recientemente definidos. ¿Es eso posible con Python?¿Hay alguna manera de identificar un método heredado en Python?
Ejemplo:
class A(object):
def spam(self):
print 'A spam'
def ham(self):
print 'A ham'
class B(A):
def spam(self):
print 'Overloaded spam'
def eggs(self):
print 'Newly defined eggs'
funcionalidad deseada:
>>> magicmethod(B.spam)
'overloaded'
>>> magicmethod(B.ham)
'inherited'
>>> magicmethod(B.eggs)
'newly defined'
¿Hay un "método mágico", como en el ejemplo, o alguna forma de saber los tipos de implementaciones de métodos de separación?
Buena llamada que este es un requisito extraño en OOP – Pengman
Este es un caso especial, donde un objeto podría tener que ser extendido sin ser subclasificado. Tengo que comprobar si puedo simplemente anular uno de los métodos, o si tengo que preservar un método de anulación ya existente. Entonces, sí, es un inspector de objetos en cierto modo, aunque no con fines de depuración/análisis. Me doy cuenta de que esto no siempre es una buena idea, pero creo que en este caso está justificado. Gracias por señalar las posibles fallas de diseño. –