Почему я теряю `__doc__` в параметризованном универсальном файле?Python

Программы на Python
Ответить
Anonymous
 Почему я теряю `__doc__` в параметризованном универсальном файле?

Сообщение Anonymous »

Проблема
Строка документации теряется при установке параметров типа в универсальном шаблоне.
Минимальный пример:
< pre class="lang-py Prettyprint-override">

Код: Выделить всё

from typing import TypeVar, Generic

T = TypeVar("T")

class Test(Generic[T]):
"""My docstring"""

assert Test.__doc__ == "My docstring"
Это работает нормально, как и ожидалось. Однако это не удается, поскольку __doc__ теперь имеет значение None:

Код: Выделить всё

assert Test[int].__doc__ == "My docstring"
Ожидание
Я ожидаю, что строка документации останется прежней. В конце концов, это все еще «тот же» класс.
Есть ли что-то, чего я не понимаю в том, как система типизации Python обеспечивает такое намеренное поведение?
Справочная информация
Используя параметризованные типы в FastAPI, я теряю описание (поступающее из строки документации) при создании спецификаций OpenAPI.
Я могу исправить это с декоратором, но в моем случае это приводит к большему количеству проблем с созданием модели Pydantic. Но это не главное. Я хотел бы понять, почему это вообще происходит, независимо от невстроенных инструментов.

Подробнее здесь: https://stackoverflow.com/questions/791 ... ed-generic
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»