Автор оригинала: Chris.
Проблема : Каков наилучший способ проверить, имеет ли данный объект данного типа? Например, если у вас есть переменная объект
, как проверить, является ли это строка
?
Проверьте с подклассами
Решение : Чтобы проверить, если объект
это пример ул ...| или любой из его подклассов, используйте
Isinstance. :
if isinstance(o, str): print(o, 'is of type string')
Обратите внимание, что если объект наследуется от строки, результат Isinstance (O, STR)
также будет Правда
Отказ
Вот пример:
class Car: def speed(self): return 100 class Sportscar(Car): def speed(self): return 200 vw = Car() porsche = Sportscar() print(isinstance(vw, Car)) # True print(isinstance(porsche, Sportscar)) # True print(isinstance(porsche, Car)) # True --> Inherit being a Car from being a Sportscar
Пример показывает, что VW
это Автомобиль
и Porsche
это Sportscar
Отказ Однако как Sportscar
наследует от Автомобиль
, Porsche
также Автомобиль
Отказ
Однако вы можете утверждать, что проверка типа не должна включать проверку подклассов. Итак, в этом примере Porsche
Экземпляр не должен быть Автомобиль
Отказ Давайте посмотрим, как сделать это следующее!
Проверьте без подклассов
Решение 2 : Чтобы проверить, если объект
это пример ул ...| , исключая подклассы, используйте Python's
Встроенная функция Тип (объект) и проверьте, это так же, как
ул используя
ключевое слово . это Отказ
obj = 'hello' if type(obj) is str: print(obj, 'is of type string (it is not a subclass)')
Вывод:
hello is of type string (it is not a subclass)
Точно так же, если вы используете тот же пример класса, что и раньше, Porsche
сейчас не будет Автомобиль
– хотя это | Sportscar Действительно
class Car: def speed(self): return 100 class Sportscar(Car): def speed(self): return 200 vw = Car() porsche = Sportscar() print(type(vw) is Car) # True print(type(porsche) is Sportscar) # True print(type(porsche) is Car) # False --> Inherit being a Car from being a Sportscar but is not of type Car
Ресурсы : Вам также может послаться, чтобы проверить следующие ресурсы о печати Python:
- https://blog.finxter.com/python-built-in-functions/
- https://stackoverflow.com/questions/152580/whats-the-canonical-way-to-check-for-type-in-python
- https://blog.finxter.com/a-simple-example-for-python-objects-and-classes-video/
Работая в качестве исследователя в распределенных системах, доктор Кристиан Майер нашел свою любовь к учению студентов компьютерных наук.
Чтобы помочь студентам достичь более высоких уровней успеха Python, он основал сайт программирования образования Finxter.com Отказ Он автор популярной книги программирования Python одноклассники (Nostarch 2020), Coauthor of Кофе-брейк Python Серия самооставленных книг, энтузиаста компьютерных наук, Фрилансера и владелец одного из лучших 10 крупнейших Питон блоги по всему миру.
Его страсти пишут, чтение и кодирование. Но его величайшая страсть состоит в том, чтобы служить стремлению кодер через Finxter и помогать им повысить свои навыки. Вы можете присоединиться к его бесплатной академии электронной почты здесь.
Оригинал: “https://blog.finxter.com/whats-the-canonical-way-to-check-for-type-in-python/”