(instance — экземпляр)
С помощью функции type()
можно проверить, принадлежит ли данное тому или иному типу:
>>> a = 10
>>> b = [1,2,3]
>>> type(a) == int
True
>>> type(b) == list
True
>>> type(a) == float
False
То же самое можно сделать с помощью функции isinstance()
:
>>> isinstance(a,int)
True
>>> isinstance(b,list)
True
>>> isinstance(b,tuple)
False
>>> c = (4,5,6)
>>> isinstance(c,tuple)
True
Однако isinstance()
по сравнению с type()
позволяет проверить данное на принадлежность хотя бы одному типу из кортежа, переданного в качестве второго аргумента:
>>> isinstance(a,(float, int, str))
True
>>> isinstance(a,(list, tuple, dict))
False
Отмечают другое более важное преимущество isinstance()
. Эта функция поддерживает наследование. Для isinstance()
экземпляр производного класса есть экземпляр его базового класса:
>>> class A (list):
... pass
...
>>> a = A()
>>> type(a) == list
False
>>> type(a) == A
True
>>> isinstance(a,A)
True
>>> isinstance(a,list)
True