Pythonには、オブジェクトの型を確認するためのtype()
関数とisinstance()
関数があります。これらの関数は似ていますが、使用する状況と結果が異なります。
type()
関数
type()
関数は、指定したオブジェクトの型を返します。これを使用すると、オブジェクトがどのデータ型に属するかを調べることができます。
num = 123
print(type(num)) # <class 'int'>
str_var = "Hello, Python!"
print(type(str_var)) # <class 'str'>
list_var = [1, 2, 3, 4, 5]
print(type(list_var)) # <class 'list'>
isinstance()
関数
isinstance()
関数は、指定したオブジェクトが指定した型に属しているかどうかを判定します。これは特定の型が期待される場合に便利です。
num = 123
print(isinstance(num, int)) # True
str_var = "Hello, Python!"
print(isinstance(str_var, str)) # True
list_var = [1, 2, 3, 4, 5]
print(isinstance(list_var, list)) # True
type()
とisinstance()
の違い
isinstance()
は継承関係を考慮して型をチェックするのに対し、type()
はオブジェクトの型そのものを返す関数なので、サブクラスまで考慮したい場合はisinstance()
を使うのが良いです。
class Fruit:
pass
class Apple(Fruit):
pass
obj_fruit = Fruit()
obj_apple = Apple()
print(isinstance(obj_fruit, Apple)) # False
print(type(obj_fruit) == Apple) # False
print(isinstance(obj_apple, Fruit)) # True
print(type(obj_apple) == Fruit) # False
上記の例では、obj_apple
の型が厳密にはApple
クラスであり、Fruit
クラスではないと判断されていることがわかります。したがって、サブクラスまで考慮したいかどうかで使い分けると良いです。
以上が、Pythonのtype()
関数とisinstance()
関数の基本的な説明と使用法です。これらの関数はPythonプログラミングの基本的な部分であり、頻繁に使用されるため、必ず頭に入れておきましょう!.