Я разделил реализацию большого класса на разные пакеты [1] и использовал импорт внутри тела метода, чтобы избежать цикла компиляции, как показано ниже:
# model.py
class MyInt:
def __init__(self, value: int):
self.value = value
def is_prime(self) -> bool:
from methods import is_prime
return is_prime(self)
# methods.py
from model import MyInt
def is_prime(x: MyInt) -> bool:
# TODO: actually implement this
return x.value == 2 or x.value % 2 == 1
Однако pytype это не устраивает, так как не удается найти файл pyi при достижении цикла импорта:
Файл "/home/bkim/Projects/mwe/model.py", строка 6, в is_prime: Couldn 'импортировать pyi для' методов '[pyi-error]
Не удается найти pyi для "модели", на которую ссылаются "методы"
Как можно избежать этого и до сих пор получить проверку типов?
[1] Я сделал это всего лишь одним крошечным утилитарным методом. Не нужно кричать о разделении класса на несколько пакетов.