Рубрики
Без рубрики

Какой стандартный способ проверить наличие типа в Python?

Проблема: Какой лучший способ проверить, имеет ли данный объект данного типа? Например, если у вас есть вариабельный объект, как проверить, является ли это строка? Установите флажок с раствором подклассов: чтобы проверить, является ли объект экземпляром STR или любой из его подклассов, используйте ISInstance: если ISInstance (O, … Какой стандартный способ проверить наличие типа в Python? Подробнее “

Автор оригинала: 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:

Работая в качестве исследователя в распределенных системах, доктор Кристиан Майер нашел свою любовь к учению студентов компьютерных наук.

Чтобы помочь студентам достичь более высоких уровней успеха 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/”