Пользовательский аннотированный класс с метаданными по умолчаниюPython

Программы на Python
Anonymous
Пользовательский аннотированный класс с метаданными по умолчанию

Сообщение Anonymous »

Я пытаюсь разработать собственный класс Annotated...
Annotated позволяет добавлять некоторые метаданные для подсказки типа, которые можно проверить во время выполнения:

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

from typing import Annotated

some: Annotated[int, 'must be even']
поэтому метаданные требуются всегда, но я хочу разработать аналогичный тип, который инициализирует метаданные некоторым значением по умолчанию

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

some: MyAnnotated[int] #  T:
if isinstance(param, tuple):
return Annotated[param[0], param[1]]  # type: ignore
return Annotated[param, '']  # type: ignore

assert MyAnnotated[int, 'my-meta'] == Annotated[int, 'my-meta']
assert MyAnnotated[int] == Annotated[int, '']
это работает так, как ожидалось, но редакторы (VScode) этого не понимают и не могут добавить автодополнение:
Изображение

хотя отлично работает с аннотированным классом по умолчанию:
Изображение


Подробнее здесь: https://stackoverflow.com/questions/765 ... t-metadata

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