python 型を確認する

python Python

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

コメント

タイトルとURLをコピーしました