gpt4 book ai didi

python-3.x - 类型检查时中断导入周期

转载 作者:行者123 更新时间:2023-12-04 10:14:46 33 4
gpt4 key购买 nike

我将一个大类的实现拆分为不同的包 [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文件:

File "/home/bkim/Projects/mwe/model.py", line 6, in is_prime: Couldn't import pyi for 'methods' [pyi-error]

Can't find pyi for 'model', referenced from 'methods'



我怎样才能避免这种情况并仍然进行类型检查?

[1] 实际上,我只用一种微小的实用方法就完成了这项工作。无需大喊大叫将一个类拆分到多个包中。

最佳答案

此解决方案使用 typing.TYPE_CHECKING , 在类型检查期间有一种行为,在运行时有另一种行为:

import typing

class MyInt:
def is_prime(self) -> bool:
if typing.TYPE_CHECKING:
return False
from methods import is_prime
return is_prime(self)

奇怪的是,使用 from typing import TYPE_CHECKING不起作用,这可能是一个错误?

关于python-3.x - 类型检查时中断导入周期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61124088/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com