type( )
type( )は、型オブジェクトを返します。object.classが返すのと同じオブジェクトです。
Python
print(type('string'))
# <class 'str'>
print(type(100))
# <class 'int'>
print(type([0, 1, 2]))
# <class 'list'>
isinstnce( )
isinstance( )は、第1引数のオブジェクトが第2引数の型のインスタンスか、その型の派生クラスのインスタンスであればTrueを返します。
Python
class Animal:
pass
class Dog(Animal):
pass
my_dog = Dog()
print(isinstance(my_dog, Dog))
# True
print(isinstance(my_dog, Animal))
# True
この例で、DogクラスはAnimalクラスから派生しているので、my_dogはAnimalクラスのインスタンスとしてTrueを返します。
Python
print(type(my_dog) is Dog)
# True
print(type(Dog) is Animal)
# False
print(isinstance(my_dog, Dog))
# True
print(isinstance(my_dog, Animal))
# True
type()は型が完全一致することを調べますが、isinstance( )は、第一引数に指定したインスタンスが、第2引数のクラスのインスタンスであることを継承関係を見て調べます。
isinstance( )の第2引数には、タプルで複数の型を渡して調べることができます。複数の型のいずれかに該当すればTrueを返します。
Python
x = 10
f = 0.1
s = "hello"
a = [0, 1, 2]
print(isinstance(x, (int, float)))
# True
print(isinstance(s, (int, str, list)))
# True
print(isinstance(x, (str, list)))
# False
print(isinstance(f, (int, float)))
# True
print(isinstance(a, (int, list)))
# true
print(isinstance(a, (int, )))
# False
コメント