isinstance() で確認する
このステップでは、Python の isinstance()
関数を使って、オブジェクトが特定のクラスまたは型のインスタンスであるかどうかを確認する方法を学びます。これは、type()
を使うよりも堅牢で推奨されるデータ型のチェック方法です。
isinstance()
関数は 2 つの引数を取ります。チェックするオブジェクトと、比較するクラスまたは型です。オブジェクトが指定されたクラスまたは型のインスタンスであれば True
を返し、そうでなければ False
を返します。
-
LabEx 環境で VS Code エディタを開きます。
-
~/project
ディレクトリに isinstance_example.py
という名前の新しいファイルを作成します。
## Check if a variable is an integer
x = 10
print(isinstance(x, int))
## Check if a variable is a float
y = 3.14
print(isinstance(y, float))
## Check if a variable is a string
z = "Hello"
print(isinstance(z, str))
## Check if a variable is a boolean
a = True
print(isinstance(a, bool))
## Check if a variable is a list
b = [1, 2, 3]
print(isinstance(b, list))
## Check if a variable is a tuple
c = (1, 2, 3)
print(isinstance(c, tuple))
## Check if a variable is a set
d = {1, 2, 3}
print(isinstance(d, set))
## Check if a variable is a dictionary
e = {"name": "Alice", "age": 30}
print(isinstance(e, dict))
-
ターミナルで python
コマンドを使ってスクリプトを実行します。
python ~/project/isinstance_example.py
以下のような出力が表示されるはずです。
True
True
True
True
True
True
True
True
すべての変数は、チェックした型のインスタンスであるため、isinstance()
はそれぞれのケースで True
を返しました。
isinstance()
は、継承 (inheritance) を扱う際に特に便利です。あるクラスが別のクラスを継承している場合、サブクラスのオブジェクトは親クラスのインスタンスとも見なされます。
-
isinstance_example.py
ファイルに以下のコードを追加します。
class Animal:
pass
class Dog(Animal):
pass
my_dog = Dog()
## Check if my_dog is an instance of Dog
print(isinstance(my_dog, Dog))
## Check if my_dog is an instance of Animal
print(isinstance(my_dog, Animal))
-
再度スクリプトを実行します。
python ~/project/isinstance_example.py
以下のような出力が表示されるはずです。
True
True
この例では、Dog
は Animal
を継承しています。したがって、my_dog
は Dog
と Animal
の両方のインスタンスです。
isinstance()
は、継承を正しく扱い、より柔軟性があるため、一般的に type()
よりも推奨されます。