我已经将一个大类实现拆分为不同的包 [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:无法为“方法”导入 pyi [pyi-error]
找不到“模型”的 pyi,引用自“方法”
我怎样才能避免这种情况并仍然进行类型检查?
[1] 实际上,我只用了一种很小的实用方法就完成了这项工作。无需大喊将一个类拆分到多个包中。