2009-11-03 11 views
8

与えられたオブジェクトは、それがクラスであるか、与えられたクラスFooのサブクラスであるかをどのようにして知ることができますか?pythonでisinstanceに相当するissubclassは何ですか?

class Bar(Foo): 
    pass 

isinstance(Bar(), Foo) # => True 

issubclass(Bar, Foo) # <--- how do I do that? 
+24

これはPythonインタプリタで実行するだけではなく、あなたのPCを完全に揚げてしまっている可能性があります。 ;-) – nikow

+0

doh!私は愚かな気分になりました:) –

+3

ちょうどメモ:ほとんどの人がタイプをチェックしたい、彼らが本当にやりたいことは、必要なメソッドが実装されているかどうかをチェックすることです。 – elzapp

答えて

22

それは1が、それが動作するように期待したとおりに動作します...

class Foo(): 
    pass 

class Bar(Foo): 
    pass 

class Bar2(): 
    pass 

print issubclass(Bar, Foo) # True 
print issubclass(Bar2, Foo) # False 

あなたはインスタンス与えられた基本クラスから派生したクラスのは、あなたが使用できるかどうかを知りたい場合は:

bar_instance = Bar() 
print issubclass(bar_instance.__class__, Foo) 
関連する問題