Tengo una clase que es una superclase para muchas otras clases. Me gustaría saber (en el init() de mi super-clase si la subclase ha anulado un método específico¿Cómo detectar la sobrecarga de métodos en subclases en python?
Traté de lograr esto con un método de clase, pero los resultados equivocaste.
class Super:
def __init__(self):
if self.method == Super.method:
print 'same'
else:
print 'different'
@classmethod
def method(cls):
pass
class Sub1(Super):
def method(self):
print 'hi'
class Sub2(Super):
pass
Super() # should be same
Sub1() # should be different
Sub2() # should be same
>>> same
>>> different
>>> different
¿hay alguna forma para una super-clase de saber si una sub-clase ha anulado un método?
Podría dices algunas palabras sobre * por qué * querrías hacer eso? – NPE
No se le ocurre nada inmediatamente, pero si incluye documentos para sus métodos, se sobrescribirán cuando se anule el método. Por lo tanto, debe poder seguirlo con 'MyClass.methodname .__ doc__'.Pero creo que esta solución es muy pirata, por lo que no la publico como una respuesta – inspectorG4dget
Básicamente quiero que la superclase tenga estos métodos definidos como solo 'pasar' y tener un método separado (en realidad, __init__) llama a estas funciones Me gustaría que init ponga en las declaraciones impresas que dicen que estamos comenzando o terminando la función, pero si esa función sigue siendo nula, estas declaraciones se ven fuera de lugar, y me gustaría terminar con ellas. – Brian