Masayan tech blog.

  1. ブログ記事一覧>
  2. Pythonのtypeとisinstanceの使い分け

Pythonのtypeとisinstanceの使い分け

公開日

環境

  • 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の使い分けについて紹介しています。ぜひ参考にしてみてください。