Python type()とisinstance()の理解:実例付き解説
Python type()とisinstance()の理解:実例付き解説
Pythonには、入力として与えられた変数のクラス型を調べる組み込み関数type()があります。例えば、入力が文字列なら<class 'str'>、リストなら<class 'list'>が返されます。
type()コマンドでは単一の引数を渡せ、戻り値は引数のクラス型になります(例: type(object))。
また、type()に3つの引数、すなわちtype(name, bases, dict)を渡すことも可能で、この場合新しい型オブジェクトが返されます。
このチュートリアルで学べること:
- Pythonにおけるtype()とは?
- type()の構文
- type()の例
- クラスオブジェクトでのtype()使用例
- name、bases、dictを使ったtype()の例
- Pythonにおけるisinstance()とは?
- isinstance()の構文
- isinstance()の例
- Pythonにおけるtype()とisinstance()の違い
type()の構文
type()は以下の2通りで使用可能:
type(object) type(name, bases, dict)
パラメータ: type(object)
- object: 必須パラメータ。これのみを渡すと、パラメータの型を返す。
パラメータ: type(name, bases, dict)
- name: クラス名
- bases: (オプション)基底クラス
- dict: (オプション)クラス定義を持つ名前空間
戻り値
objectのみを渡した場合、そのオブジェクトの型を返す。
type(name, bases, dict)形式で渡した場合、新しい型オブジェクトを返す。
type()の例
文字列、数値、浮動小数点数、複素数、リスト、タプル、辞書、セットを用意し、それぞれにtype()を適用:
str_list = "Welcome to Guru99"
age = 50
pi = 3.14
c_num = 3j+10
my_list = ["A", "B", "C", "D"]
my_tuple = ("A", "B", "C", "D")
my_dict = {"A":"a", "B":"b", "C":"c", "D":"d"}
my_set = {'A', 'B', 'C', 'D'}
print("型:", type(str_list))
print("型:", type(age))
print("型:", type(pi))
print("型:", type(c_num))
print("型:", type(my_list))
print("型:", type(my_tuple))
print("型:", type(my_dict))
print("型:", type(my_set))
出力:
型:型: 型: 型: 型: 型: 型: 型:
クラスオブジェクトでのtype()使用例
クラスから作成されたオブジェクトをtype()で調べると、クラス型とクラス名が返されます。クラスを作成し、そのオブジェクトの型を確認:
class test:
s = 'testing'
t = test()
print(type(t))
出力:
<class '__main__.test'>
name、bases、dictを使ったtype()の例
type()はtype(name, bases, dict)構文でも呼べます。
type()に渡す3つのパラメータ(name、bases、dict)はクラス定義を構成する要素です。nameはクラス名、basesは基底クラス、dictは基底クラス属性の辞書です。
すべての3パラメータを使用する例:
class MyClass:
x = 'Hello World'
y = 50
t1 = type('NewClass', (MyClass,), dict(x='Hello World', y=50))
print(type(t1))
print(vars(t1))
出力:
<class 'type'>
{'x': 'Hello World', 'y': 50, '__module__': '__main__', '__doc__': None}
3つの引数をすべて渡すと、基底クラス属性を持つ新しいクラスを初期化できます。
Pythonにおけるisinstance()とは?
Pythonのisinstance()は組み込み関数の一部です。2つの引数を取り、第1引数が第2引数のclassinfoのインスタンスならTrueを返します。
isinstance()の構文
isinstance(object, classtype)
パラメータ
- object: classtypeと比較するオブジェクト。型が一致ならTrue、そうでなければFalse。
- class type: 型、クラス、または型/クラスのタプル。
戻り値
オブジェクトがclasstypeのインスタンスならTrue、そうでなければFalse。
isinstance()の例
例: isinstance()整数チェック
整数値51を型intと比較。51の型がintと一致ならTrue:
age = isinstance(51, int)
print("ageは整数:", age)
出力:
ageは整数: True
例: isinstance()浮動小数点数チェック
pi = isinstance(3.14, float)
print("piは浮動小数点数:", pi)
出力:
piは浮動小数点数: True
例: isinstance()文字列チェック
message = isinstance("Hello World", str)
print("messageは文字列:", message)
出力:
messageは文字列: True
例: isinstance()タプルチェック
my_tuple = isinstance((1,2,3,4,5), tuple)
print("my_tupleはタプル:", my_tuple)
出力:
my_tupleはタプル: True
例: isinstance()セットチェック
my_set = isinstance({1,2,3,4,5}, set)
print("my_setはセット:", my_set)
出力:
my_setはセット: True
例: isinstance()リストチェック
my_list = isinstance([1,2,3,4,5], list)
print("my_listはリスト:", my_list)
出力:
my_listはリスト: True
例: isinstance()辞書チェック
my_dict = isinstance({"A":"a", "B":"b", "C":"c", "D":"d"}, dict)
print("my_dictは辞書:", my_dict)
出力:
my_dictは辞書: True
例: isinstance()クラステスト
クラスの型チェックをisinstance()で実施。クラスのオブジェクトをクラス名と比較。オブジェクトがクラスに属していればTrue:
class MyClass:
_message = "Hello World"
_class = MyClass()
print("_classはMyClassのインスタンス:", isinstance(_class, MyClass))
出力:
_classはMyClassのインスタンス: True
Pythonにおけるtype()とisinstance()の違い
| type() | isinstance() |
|---|---|
| 入力変数のクラス型を調べる組み込み関数 | 値と指定型を比較し、一致ならTrue、不一致ならFalseを返す組み込み関数 |
| 戻り値は型オブジェクト | 戻り値はブール値(True/False) |
class A:
my_listA = [1,2,3]
class B(A):
my_listB = [1,2,3]
print(type(A()) == A)
print(type(B()) == A)
出力: True False typeではサブクラスチェックがFalseになる |
class A:
my_listA = [1,2,3]
class B(A):
my_listB = [1,2,3]
print(isinstance(A(), A))
print(isinstance(B(), A))
出力: True True isinstance()はサブクラスでもTrueを返す |
まとめ
- Pythonの組み込み
type()で変数のクラス型を取得可能(文字列なら<class 'str'>、リストなら<class 'list'>など) type()に単一引数を渡すとその引数のクラス型を返す(例:type(object))type(name, bases, dict)で3引数を渡すと新しい型オブジェクトを返す- Pythonの組み込み
isinstance()で値と型を比較し、一致ならTrue、不一致ならFalse isinstance()で文字列、浮動小数点数、整数、リスト、タプル、辞書、セット、クラスなどをテスト可能
Python
- Raspberry Pi と Python でロボットを構築:完全ガイド
- C# の式、文、ブロック:実践例で徹底理解
- Python 型変換とキャスト: 包括的ガイド
- Pythonにおける数値、型変換、数学のマスター
- Python str.count()マスター:文字と部分文字列のカウント実例集
- Python format()文字列を明確な例でマスター
- Python String.find()メソッド完全ガイド:構文、例、代替手法
- Pythonラムダ関数をマスターする:実例とベストプラクティス
- Python round()関数を実例で徹底解説
- Python map()関数をマスター:構文、例、ベストプラクティス
- Python timeit():実行時間測定の実例付きガイド