Аннотация методов получения/установки в файлах-заглушках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
Ответить

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

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

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

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

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