Перейти до змісту

type

З одним аргументом повертає тип об'єкта. Значення, що повертається, є типом та, як правило, тим самим об'єктом, який повертає object.class.

Для перевірки типу об'єкта рекомендується використовувати вбудовану функцію isinstance, оскільки вона враховує підкласи.

Синтаксис

type(object)

Параметри

object

Будь-який об'єкт Python.

Значення, що повертається

Тип.

Приклади використання

In [30]: numbers = [1, 2, 3]

In [31]: type(numbers)
Out[31]: list

In [32]: type(numbers) == list
Out[32]: True

З type можна перевіряти тільки конкретний тип, успадкування не працює:

In [33]: from collections.abc import Iterable

In [34]: type(numbers) == Iterable
Out[34]: False

Приклад використання всередині класу

Тут type використовується для додавання імені класу до str/repr без введення його вручну:

from datetime import datetime


class Task:
    def __init__(self, title, description=None, due=None):
        self.title = title
        self.description = description
        if due is None:
            self.due = datetime.now().date()
        else:
            self.due = datetime.strptime(due, "%d/%m/%Y").date()

    def __str__(self):
        return f"{type(self).__name__}('{self.title}')"

    def __repr__(self):
        return f"<{type(self).__name__} title='{self.title}' due={self.due}>"


if __name__ == "__main__":
    t1 = Task("task1", due="15/09/2023")
    t2 = Task("task2")
In [2]: str(t1)
Out[2]: "Task('task1')"

In [3]: repr(t1)
Out[3]: "<Task title='task1' due=2023-09-15>"

У цьому випадку при успадкуванні класу ім'я буде ім'ям дочірнього класу:

class ScheduledTask(Task):
    pass


In [6]: t3 = ScheduledTask("task1", due="15/09/2023")

In [7]: str(t3)
Out[7]: "ScheduledTask('task1')"

In [8]: repr(t3)
Out[8]: "<ScheduledTask title='task1' due=2023-09-15>"

Дивись також

isinstance