2016-05-25 17 views
5

Sto provando ad identificare se una classe che ho ricevuto tramite un argomento ha una funzione definita dall'utente __init__ nella classe che è stata passata. Non in una super classe.Determinare se la classe ha utente definito __init__

class HasInit(object): 
    def __init__(self): 
    pass 

class NoInit(object): 
    pass 

class Base(object): 
    def __init__(self): 
    pass 

class StillNoInit(Base): 
    pass 

def has_user_defined_init_in(clazz): 
    return True if # the magic 

assert has_user_defined_init_in(HasInit) == True 
assert has_user_defined_init_in(NoInit) == False 
assert has_user_defined_init_in(StillNoInit) == False 
+0

Forse uno sguardo alle http://stackoverflow.com/questions/25295327/how-to-check-if-a-python-class- has-particular-method-or-no – techydesigner

risposta

6

penso che questo funzionerà:

def has_user_defined_init_in(clazz): 
    return "__init__" in clazz.__dict__ 
+0

Ho appena qualche secondo di timore di postare questo :-). – AKS

+0

Molto semplice ed elegante. La maggior parte dei Pythonic. Buon codice –

Problemi correlati