環境
- Windows 10
- Python 3.10.1
- VSCode
前提
- Pythonは動的型付け言語なので、何かしらの処理の前にデータ型を判定しておく必要があるケースがよくある
- こういった場合に便利なのが、type()とisinstance()です。これらは、対象となる値のデータ型を判定することが可能な組み込みの関数
- それぞれの関数には明確な違いがあるので、それぞれの違いを把握しておくことが重要
<使用例>
type(1) // <class 'int'>
isinstance(1, int)
結論
- 型を正確に判定したい場合はtype()を、継承も考慮した上で判定したい場合はisinstance()を使うようにする
- 例えば、わかりやすい例だと、Pythonでは、boolはintのサブクラスなので、typeとisinstanceの結果はそれぞれ以下のように異なる
print(type(True) == int) # False
print(isinstance(True, int)) # True
※boolの実装を見ると、intを継承していることがわかる
builtins.pyi
@final
class bool(int):
...
まとめ
いかがでしたでしょうか。本記事では、Pythonのtypeとisinstanceの使い分けについて紹介しています。ぜひ参考にしてみてください。