2016-05-25 13 views
5

Ich versuche herauszufinden, ob eine Klasse, die ich über ein Argument erhalten habe, eine benutzerdefinierte __init__ Funktion in der übergebenen Klasse hat. Nicht in irgendeiner Superklasse.Bestimmt, ob die Klasse benutzerdefiniert ist __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

Vielleicht einen Blick auf http://stackoverflow.com/questions/25295327/how-to-check-if-a-python-class- haben has-particular-method-or-not – techydesigner

Antwort

6

ich denke, das funktioniert:

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

Ich habe nur ein paar Sekunden Zeit, dies zu veröffentlichen :-). – AKS

+0

Sehr einfach und elegant. Meiste Pythonic. Guter Code. –

Verwandte Themen