【发布时间】:2022-01-05 12:04:38
【问题描述】:
我有一组类,我们称它们为Foo 和Bar,它们都继承自在当前范围之外(不是我)定义的基类Father。我已经定义了一个协议类DummyProtocol,它有一个函数do_something。
class DummyProtocol(Protocol):
def do_something(self):
...
class Foo(Father):
def do_something(self):
pass
class Bar(Father):
def do_something(self):
pass
我有一个函数create_instance。
def create_dummy_and_father_instance(cls, *args, **kwargs):
return cls(*args, **kwargs)
我想以某种方式输入提示,即 cls 被输入提示以接受 Father 类型的类,该类也实现了 DummyProtocol。
所以我把函数改成这个,表示cls是继承自Father和DummyProtocol的类型
def create_dummy_and_father_instance(
cls: Type[tuple[Father, DummyProtocol]], *args, **kwargs
):
return cls(*args, **kwargs)
但我在mypy 中收到此错误:
Cannot instantiate type "Type[Tuple[Father, DummyProtocol]]"
【问题讨论】:
-
stackoverflow.com/a/62661785/14617085是你要找的这种吗??
-
@basicmojo 我不这么认为。我需要一个类型提示,表明一个对象在参数部分的基类旁边实现了任意数量的协议。更改类定义是我唯一的方法吗?
-
在这里问,discord.gg/t4gsyP9EQ3,管理员 asotille 非常擅长打字提示
标签: python type-hinting mypy