> For the complete documentation index, see [llms.txt](https://bemind.gitbook.io/neural/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://bemind.gitbook.io/neural/python/vstroennye-funkcii-python/type.md).

# type()

Функция `type()` в Python используется для определения типа объекта или создания новых типов (классов).

**Назначение**:

* Определить тип объекта.
* Создать новый тип (класс) динамически.

**Возврат**:

* При вызове с одним аргументом возвращает тип объекта.
* При вызове с тремя аргументами возвращает новый объект типа (класс).

**Описание**:

* Может быть вызвана с одним аргументом для определения типа объекта.
* Может быть вызвана с тремя аргументами для создания нового типа (класса):
  1. `name` - строка, содержащая имя нового класса.
  2. `bases` - кортеж базовых классов.
  3. `dict` - словарь, определяющий пространство имен класса.

**Примеры**:

1. Определение типа ***простых объектов***
2. Определение типа ***пользовательских объектов***
3. ***Создание нового класса*** с помощью type()

{% tabs %}
{% tab title="1." %}

```python
print(type(5))  # Выведет: <class 'int'>
print(type("Hello"))  # Выведет: <class 'str'>
print(type([1, 2, 3]))  # Выведет: <class 'list'>
```

{% endtab %}

{% tab title="2." %}

```python
class MyClass:
    pass

obj = MyClass()
print(type(obj))  # Выведет: <class '__main__.MyClass'>
```

{% endtab %}

{% tab title="3." %}

```renpy
NewClass = type('NewClass', (), {'x': 5, 'print_x': lambda self: print(self.x)})
obj = NewClass()
obj.print_x()  # Выведет: 5
```

{% endtab %}
{% endtabs %}

**Использование**:

* Для проверки типа объекта в runtime.
* В метапрограммировании для создания классов динамически.
* Для реализации фабрик классов.
* При отладке для выяснения типа неизвестных объектов.

Функция `type()` является фундаментальной в Python и играет двойную роль. В своем наиболее распространенном использовании она позволяет определить тип объекта, что полезно для отладки и проверки типов во время выполнения программы. В более продвинутом использовании `type()` может создавать новые классы динамически, что делает её мощным инструментом для метапрограммирования.

Важно отметить, что хотя `type()` часто используется для проверки типов, в Python обычно предпочтительнее использовать `isinstance()` для проверки типа объекта, особенно когда речь идет о наследовании. `type()` проверяет точный тип объекта, в то время как `isinstance()` учитывает иерархию наследования.


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://bemind.gitbook.io/neural/python/vstroennye-funkcii-python/type.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
