如何解决如何定义一种封装/描述特定模块的行为/签名的类型?
如何定义一种封装/描述特定模块的行为/签名的类型?
问题源于我必须睡在我的代码中,而我想对此进行抽象。我想为time
库注入一个模拟(很可能以后我想要time
之后的其他函数),并且我还想定义类型以启用静态类型检查(MyPy用于类型检查)。我还希望我的IDE具有适当的自动补全功能和说明文件(如果可以正确猜出“类型”,情况将会如此)
我目前有以下代码可以运行并通过我的检查,但是这只会忽略MyPy错误(时间不是有效类型):
import time
[other relevant imports]
...
@dataclass
class RPUService:
config: RPUConfig
_time: time = time # type: ignore[valid-type]
...
def some_method(self):
self._time.sleep(self.config.sleepytime)
我还可以如下编写_time
定义:
from types import ModuleType
_time: ModuleType = time
或类似地与Any
:
from typing import Any
_time: Any = time
这两个都是有效的,但是这消除了我的IDE将self._time
识别为time
库的能力。 (或类似time
库的东西)
我可以定义一个Protocol
签名的time.sleep
,但是我宁愿没有维护这样一个Protocol
的开销。 (PEP-544)
所以我的问题是,如何定义一个封装/描述特定模块行为的类型?
(如果不清楚,请询问)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。