Функция
type()
в Python — это встроенная функция, которая возвращает тип объекта. Эта функция очень полезна, когда вам нужно знать тип объекта для корректной работы с ним.
Синтаксис функции выглядит следующим образом:
type(object)
Параметры:
object
: Объект, тип которого нужно определить.print(type(10)) # <class 'int'>
print(type(3.14)) # <class 'float'>
print(type("Hello, world!")) # <class 'str'>
print(type([1, 2, 3])) # <class 'list'>
print(type((1, 2, 3))) # <class 'tuple'>
print(type({1, 2, 3})) # <class 'set'>
print(type({"one": 1, "two": 2})) # <class 'dict'>
В этих примерах функция type()
используется для определения типов различных объектов: целых чисел, вещественных чисел, строк, списков, кортежей, множеств и словарей.
Функция type()
также может быть использована для создания новых типов. Это делает type()
мощным инструментом метапрограммирования.
# Создание нового типа
MyClass = type('MyClass', (object,), {'x': 5})
# Создание экземпляра нового типа
my_instance = MyClass()
print(type(my_instance)) # <class '__main__.MyClass'>
print(my_instance.x) # 5
Здесь функция type()
используется с тремя аргументами (name
, bases
и dict
):
name
: Имя нового типа.bases
: Кортеж базовых классов.dict
: Словарь атрибутов класса.Проверка типа объекта: Функция type()
может быть использована для проверки того, относится ли объект к определенному типу. Для этого результат функции type()
сравнивается с целевым типом.
def is_string(obj):
return type(obj) == str
print(is_string("Hello, world!")) # True
print(is_string(100)) # False
type() vs isinstance(): Функция type()
проверяет точный тип объекта, в то время как isinstance()
проверяет, является ли объект экземпляром указанного класса или любого из его подклассов. Это различие становится важным при работе с иерархиями классов.
class MySubClass(int): pass
obj = MySubClass()
print(type(obj) == int) # False
print(isinstance(obj, int)) # True
Динамическое добавление методов в класс: С помощью type()
можно динамически добавлять методы в создаваемый класс.
def print_hello(self):
print("Hello, world!")
MyClass = type('MyClass', (object,), {'x': 5, 'print_hello': print_hello})
my_instance = MyClass()
my_instance.print_hello() # Hello, world!
Типы и классы в Python 3: В Python 3 все типы являются классами, и type()
вернет класс, который был использован для создания экземпляра.
print(type(3)) # <class 'int'>
print(type({})) # <class 'dict'>
print(type([])) # <class 'list'>
type() как объект: В Python функция type()
сама является объектом, и это объект — класс. Это является еще одним примером того, что в Python все является объектами.
print(type(type)) # <class 'type'>
Эта особенность подчеркивает принцип «все является объектом» в Python, и позволяет динамически изменять поведение и свойства даже таких вещей, как сама функция type()
.
Функция type()
в Python — это удобный инструмент для определения типа объекта, что полезно при обработке различных типов данных. Кроме того, она также может быть использована для динамического создания новых типов, что делает её ценным инструментом для метапрограммирования.
Содержание: