Ho una classe che è una super classe per molte altre classi. Mi piacerebbe sapere (nel init() della mia super-classe, se la sottoclasse ha ignorato un metodo specificoCome rilevare il sovraccarico del metodo in sottoclassi in python?
Ho provato a fare questo con un metodo di classe, ma i risultati erano sbagliate:.
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
c'è un modo per un super-classe per sapere se una sottoclasse ha ignorato un metodo?
Could dici qualche parola su * perché * vorresti farlo? – NPE
Immediatamente, non viene in mente nulla, ma se si includono le docstring per i propri metodi, vengono sovrascritte quando il metodo viene sovrascritto. Dovresti quindi essere in grado di seguirlo con 'MyClass.methodname .__ doc__'.Ma trovo questa soluzione molto compromessa, motivo per cui non la sto postando come risposta – inspectorG4dget
Fondamentalmente voglio che la super-classe abbia questi metodi definiti semplicemente 'pass' e abbiano un metodo separato (in realtà __init__) chiama queste funzioni. Mi piacerebbe che init inserisse delle istruzioni di stampa che dicono che stiamo iniziando o terminando la funzione, ma se quella funzione è ancora nulla, queste affermazioni sembrano fuori luogo e vorrei eliminarle. – Brian