2016-05-25 4 views
5

私は、引数で受け取ったクラスに、渡されたクラスの__init__関数が定義されているかどうかを調べようとしています。スーパークラスではありません。クラスにユーザ定義があるかどうかを調べる__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

おそらくhttp://stackoverflow.com/questions/25295327/how-to-check-if-a-python-class-を見てhas-particular-method-or-not – techydesigner

答えて

6

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

ちょうどこれを掲示するのは恥ずかしがり屋です:-)。 – AKS

+0

非常にシンプルでエレガントです。最もPythonic。良いコード。 –

関連する問題