Функция Python type()
type()является встроенной функцией в Python, используемой для получения типа объекта.
type()является одной из наиболее часто используемых функций в Python, которая помогает понять тип объекта и является очень важным инструментом в языках с динамической типизацией.
Пояснение термина: type 意为"类型",用于获取对象的类型信息。
Базовый синтаксис и параметры
Синтаксис
type(object) type(name, bases, dict)
Описание параметра
- Параметр object:
- Тип: любой объект
- Описание: объект, тип которого нужно получить.
- Параметры name, bases, dict:
- Тип: строка, кортеж классов, словарь
- Описание: Используется для динамического создания класса.
Описание функций
- Возвращаемое значение: Возвращает тип объекта (объект типа).
Примеры
Пример 1: Получить тип объекта
Пример
# Получить тип базовых типов
print(type(123)) # Вывод: <class 'int'>
print(type(3.14)) # Вывод: <class 'float'>
print(type("hello")) # Вывод: <class 'str'>
print(type(True)) # Вывод: <class 'bool'>
print(type([1, 2, 3])) # Вывод: <class 'list'>
print(type({"a": 1})) # Вывод: <class 'dict'>
print(type((1, 2))) # Вывод: <class 'tuple'>
print(type({1, 2})) # Вывод: <class 'set'>
# Тип None
print(type(None)) # Вывод: <class 'NoneType'>
print(type(123)) # Вывод: <class 'int'>
print(type(3.14)) # Вывод: <class 'float'>
print(type("hello")) # Вывод: <class 'str'>
print(type(True)) # Вывод: <class 'bool'>
print(type([1, 2, 3])) # Вывод: <class 'list'>
print(type({"a": 1})) # Вывод: <class 'dict'>
print(type((1, 2))) # Вывод: <class 'tuple'>
print(type({1, 2})) # Вывод: <class 'set'>
# Тип None
print(type(None)) # Вывод: <class 'NoneType'>
Ожидаемый вывод:
<class 'int'> <class 'float'> <class 'str'> <class 'bool'> <class 'list'> <class 'dict'> <class 'tuple'> <class 'set'> <class 'NoneType'>
Анализ кода:
type()Возвращает объект типа объекта.- Каждый тип сам по себе также является экземпляром класса type.
Пример 2: Сравнение типов
Пример
# Прямое сравнение
value = 42
print(type(value) == int) # Вывод: True
print(type(value) == str) # Вывод: False
# Использование isinstance (рекомендуется)
print(isinstance(42, int)) # Вывод: True
print(isinstance("hello", str)) # Вывод: True
print(isinstance(42, (int, float))) # Вывод: True
# Проверка пользовательских классов
class Dog:
pass
class Cat:
pass
dog = Dog()
print(type(dog) == Dog) # Вывод: True
print(type(dog) == Cat) # Вывод: False
print(isinstance(dog, Dog)) # Вывод: True
value = 42
print(type(value) == int) # Вывод: True
print(type(value) == str) # Вывод: False
# Использование isinstance (рекомендуется)
print(isinstance(42, int)) # Вывод: True
print(isinstance("hello", str)) # Вывод: True
print(isinstance(42, (int, float))) # Вывод: True
# Проверка пользовательских классов
class Dog:
pass
class Cat:
pass
dog = Dog()
print(type(dog) == Dog) # Вывод: True
print(type(dog) == Cat) # Вывод: False
print(isinstance(dog, Dog)) # Вывод: True
Ожидаемый вывод:
True False True True True True False True
Анализ кода:
- Вы можете использовать
type() ==для точного сравнения типов. - Но рекомендуется использовать
isinstance(), потому что он поддерживает наследование.
Пример 3: Динамическое создание класса
Пример
# Создать класс динамически с помощью type()
Person = type("Person", (), {
"name": "Unknown",
"age": 0,
"greet": lambda self: f"Hello, I am {self.name}"
})
# Использовать динамически созданный класс
p = Person()
p.name = "Tom"
print(p.name) # Вывод: Tom
print(p.greet()) # Вывод: Hello, I am Tom
# Создать класс с наследованием
class Animal:
def speak(self):
return "..."
class Dog(Animal):
def speak(self):
return "Гав!"
DogClass = type("DogClass", (Animal,), {
"speak": lambda self: "Woof!"
})
dog = DogClass()
print(dog.speak()) # Вывод: Гав!
print(isinstance(dog, Animal)) # Вывод: True
Person = type("Person", (), {
"name": "Unknown",
"age": 0,
"greet": lambda self: f"Hello, I am {self.name}"
})
# Использовать динамически созданный класс
p = Person()
p.name = "Tom"
print(p.name) # Вывод: Tom
print(p.greet()) # Вывод: Hello, I am Tom
# Создать класс с наследованием
class Animal:
def speak(self):
return "..."
class Dog(Animal):
def speak(self):
return "Гав!"
DogClass = type("DogClass", (Animal,), {
"speak": lambda self: "Woof!"
})
dog = DogClass()
print(dog.speak()) # Вывод: Гав!
print(isinstance(dog, Animal)) # Вывод: True
Ожидаемый вывод:
Динамическое создание классов редко используется в реальном программировании, но понимание этого важно для программирования метаклассов.
type()является одной из самых базовых и важных функций в Python.
Другие расширения
Встроенные функции Python3