Функция type() в Python
avatar
7 | (offline)
❤️‍🔥Notehunter Developer
Добавлено:
Категория: Основы «Python»
Комментариев: 0

Функция type() служит для получения типа объекта в языке программирования Python

Синтаксис:

type(object)

type(name, bases, dict)

Аргументы:

  • Если в функцию type() передается один аргумент, то она возвращает тип объекта.
  • Когда в функцию type() передаются три аргумента, он возвращает объект нового типа. Таким образом, создаются динамические классы.
    • Строка name становится именем класса. То же, что и атрибут __name__ класса. 
    • Кортеж base определяет базовые классы. То же, что и атрибут __bases__ класса. 
    • Словарь dict используется для создания тела класса. То же, что и атрибут __dict__ класса.

Давайте рассмотрим примеры с использованием функции type():

import datetime

# Объявим переменную int

a = 25

print(type(a))

# Объявим переменную строку

string = 'АБВГДЕЁЖ'

print(type(string))

# Объявим класс


class Person:
    pass


p = Person()

print(type(p))

# Объявим список

num_list = [24, 29, 25, 30]

print(type(num_list))

# Объявим получение сегодняшней даты и времени

now = datetime.datetime.now()

print(type(now))

Результаты:

>>> <class 'int'>
>>> <class 'str'>
>>> <class '__main__.Person'>
>>> <class 'list'>
>>> <class 'datetime.datetime'>

Примечание: функция type() возвращает объект с именем модуля. В случае с классом у нас нет модуля, поэтому выводится __main__.

Создание динамических классов

Допустим у нас есть обычные классы:

class Person:
    """Person Class"""
    name = 'Vladislav'


class Student(Person):
    """Student Class"""
    course = 4


print(Person.__class__, Person.__bases__, Person.__dict__, Person.__doc__)
print(Student.__class__, Student.__bases__, Student.__dict__, Student.__doc__)

Получим результат:


>>> <class 'type'> (<class 'object'>,) {'__module__': '__main__', '__doc__': 'Person Class', 'name': 'Vladislav', '__dict__': <attribute '__dict__' of 'Person' objects>, '__weakref__': <attribute '__weakref__' of 'Person' objects>} Person Class

>>> <class 'type'> (<class '__main__.Person'>,) {'__module__': '__main__', '__doc__': 'Student Class', 'course': 4} Student Class

А теперь создадим тоже самое с помощью функции type()

Person = type('Person', (object,), {'__doc__': 'Person Class', 'name': 'Vladislav'})
Student = type('Student', (Person,), {'__doc__': 'Student Class', 'course': 4})

print(Person.__class__, Person.__bases__, Person.__dict__, Person.__doc__)
print(Student.__class__, Student.__bases__, Student.__dict__, Student.__doc__)

Результат:

>>> <class 'type'> (<class 'object'>,) {'__doc__': 'Person Class', 'name': 'Vladislav', '__module__': '__main__', '__dict__': <attribute '__dict__' of 'Person' objects>, '__weakref__': <attribute '__weakref__' of 'Person' objects>} Person Class

>>> <class 'type'> (<class '__main__.Person'>,) {'__doc__': 'Student Class', 'course': 4, '__module__': '__main__'} Student Class

Примечание: мы не можем создавать функции в динамическом классе с помощью type()

Теги записи: Python, Основы Python, type(),
Комментарии к статье 0
Комментариев нет
Форма добавления комментария (необходима регистрация)