Є дві вбудовані функції, які допомагають визначити тип об’єкта. Ви можете використовувати , type()
якщо вам потрібен точний тип об'єкта, і isinstance()
щоб перевірити тип об'єкта проти чого - то. Зазвичай ви хочете використовувати isistance()
більшість разів, оскільки це дуже надійно і також підтримує успадкування типів.
Щоб отримати фактичний тип об’єкта, ви використовуєте вбудовану type()
функцію. Передача об'єкта як єдиного параметра поверне об'єкт типу цього об'єкта:
>>> type([]) is list
True
>>> type({}) is dict
True
>>> type('') is str
True
>>> type(0) is int
True
Звичайно, це також працює для спеціальних типів:
>>> class Test1 (object):
pass
>>> class Test2 (Test1):
pass
>>> a = Test1()
>>> b = Test2()
>>> type(a) is Test1
True
>>> type(b) is Test2
True
Зверніть увагу, що type()
він поверне лише безпосередній тип об'єкта, але не зможе повідомити вам про успадкування типу.
>>> type(b) is Test1
False
Щоб прикрити це, слід скористатися isinstance
функцією. Це, звичайно, також працює для вбудованих типів:
>>> isinstance(b, Test1)
True
>>> isinstance(b, Test2)
True
>>> isinstance(a, Test1)
True
>>> isinstance(a, Test2)
False
>>> isinstance([], list)
True
>>> isinstance({}, dict)
True
isinstance()
зазвичай є кращим способом забезпечення типу об'єкта, оскільки він також приймає похідні типи. Тому, якщо вам фактично не потрібен об'єкт типу (з будь-якої причини), використання isinstance()
є кращим над type()
.
Другий параметр isinstance()
також приймає кордону типів, тому можна перевірити відразу кілька типів. isinstance
Тоді повернеться true, якщо об'єкт має будь-який із цих типів:
>>> isinstance([], (tuple, list, set))
True