8
class a:
pass
class b(a):
pass
c = b()
type(c) == a #returns False
オブジェクトがクラスから継承するかどうかをチェックできるtype()の代替手段はありますか?Pythonで基底クラス型を取得する
class a:
pass
class b(a):
pass
c = b()
type(c) == a #returns False
オブジェクトがクラスから継承するかどうかをチェックできるtype()の代替手段はありますか?Pythonで基底クラス型を取得する
はい、isinstance:isinstance(obj, Klass)
>>> class a:
... pass
...
>>> class b(a):
... pass
...
>>> c = b()
>>> d = a()
>>> type(c) == type(d)
True
タイプ()タイプのオブジェクトを返します。 aは実際のクラスであり、タイプではありません
あなたの答えは、OPの質問に矛盾しているようです。私はちょうどタイプチェックに向かい始めているので、私はどんなコメントにも興味があります。あなたはタイプ(c)==タイプ(d)と確信していますか? –
'type(c)'と 'type(d)'は 'class instance'型を返します。したがって、それらは等しくなければなりません。ここではisinstanceを使うべきだと思います。 'class x:pass'と' z = x() 'を作成することでこれを確認できますが、' class x'と 'class a'の間に継承はありませんが、' type(z)== type(c ) 'はTrueを返します。 – smwikipedia
上記はPython 2.7.8です。 Python 3.4.1では、 'type(c)'と 'type(d)'は 'class 'type'を返します。これは' True'の結果にもつながります。しかし、 'c'と' d'は同じ型であるとは言いません。 – smwikipedia