Аннотация методов получения/установки в файлах-заглушкахPython

Программы на Python
Anonymous
Аннотация методов получения/установки в файлах-заглушках

Сообщение Anonymous »

Я работаю над документацией по коду-оболочке Python для библиотеки .NET. Для явного получения и установки свойств .NET я использую методы получения и установки. Для удобства чтения кода я использую подсказки типов по всему коду. Для разрешения мультиметодов и предоставления контекстной справки я параллельно поддерживаю файлы-заглушки. И здесь я столкнулся с некоторыми проблемами. У меня есть файл Python Test.py, который содержит

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

class test:
def __init__(self) -> None:
self._foo = 0

@property
def foo(self) -> int:
return self._foo

@foo.setter
def foo(self, bar: int) -> None:
self._foo = bar
и у меня есть файл-заглушка Test.pyi с содержимым:

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

class test:
_foo: int
def __init__(self) -> None: ...

@property
def foo(self) -> int: ...

@foo.setter
def foo(self, bar: int) -> None: ...
PyCharm выдает ошибку:

Ожидал тип «int», вместо этого получено «Нет».

для возвращаемого типа метода установки в файле Python:
Изображение

Похоже, что PyCharm просто оценивает метод получения файла-заглушки. Я мог бы сделать:

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

@property
def foo(self) -> int | None: ...
в файле-заглушке, который устраняет возникшую ошибку, хотя это не кажется правильным способом сделать это.
Как правильно аннотировать методы получения и установки в файлах-заглушках?>

Подробнее здесь: https://stackoverflow.com/questions/798 ... stub-files

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