オブジェクトの種類を判別しますか? [重複] 質問する

オブジェクトの種類を判別しますか? [重複] 質問する

変数がリスト、辞書、または何か他のものであるかどうかを判断する簡単な方法はありますか?

ベストアンサー1

オブジェクトの種類を識別するのに役立つ組み込み関数が2つあります。type()オブジェクトの正確な型が必要な場合、isinstance()オブジェクトの型を何かと比較しますisinstance()これは非常に堅牢であり、型の継承もサポートしているため、通常はほとんどの場合に使用します。


オブジェクトの実際の型を取得するには、組み込みのtype()関数。オブジェクトを唯一のパラメータとして渡すと、そのオブジェクトの型オブジェクトが返されます。

>>> type([]) is list
True
>>> type({}) is dict
True
>>> type('') is str
True
>>> type(0) is int
True

もちろん、これはカスタムタイプでも機能します。

>>> class Test1 (object):
        pass
>>> class Test2 (Test1):
        pass
>>> a = Test1()
>>> b = Test2()
>>> type(a) is Test1
True
>>> type(b) is Test2
True

type()オブジェクトの直接の型のみが返され、型の継承については通知されないことに注意してください。

>>> type(b) is Test1
False

それをカバーするには、isinstance関数。もちろん、組み込み型でも機能します。

>>> isinstance(b, Test1)
True
>>> isinstance(b, Test2)
True
>>> isinstance(a, Test1)
True
>>> isinstance(a, Test2)
False
>>> isinstance([], list)
True
>>> isinstance({}, dict)
True

isinstance()は、派生型も受け入れるため、オブジェクトの型を確認するための推奨される方法です。したがって、実際に型オブジェクトが必要な場合を除き (何らかの理由で)、isinstance()よりも を使用することをお勧めしますtype()

の 2 番目のパラメータはisinstance()型のタプルも受け入れるため、一度に複数の型をチェックできます。isinstanceオブジェクトがこれらの型のいずれかである場合は true を返します。

>>> isinstance([], (tuple, list, set))
True

おすすめ記事