【发布时间】:2021-03-10 23:14:46
【问题描述】:
我试图将一个类传递给 Python 中的函数,然后在函数中实例化它并返回它。 到目前为止这有效,但是一旦我尝试添加 Python 类型,我就会收到以下错误:
Expected no arguments to "object" constructor Pylance (reportGeneralTypeIssues)
这是发生错误的最小示例。
from dataclasses import dataclass
from typing import Dict, Type, TypeVar
@dataclass
class Bar:
x: int
T = TypeVar('T')
def Foo(clazz: Type[T], kwargs: Dict[str, int]) -> T:
return clazz(**kwargs) # --> Expected no arguments to "object" constructor
bar = Foo(Bar, {'x': 1})
print(type(bar)) # --> <class '__main__.Bar'>
有人可以向我解释我在这里做错了什么吗?
【问题讨论】:
-
简而言之,注释声称这适用于所有类型和所有参数,而实际上它显然不是。
-
@MisterMiyagi 谢谢你的解释。那讲得通。你能告诉我我需要调整什么才能让它工作吗?
-
你对类型有什么限制吗?
-
我相信您应该将 Foo 定义为:
def Foo(clazz: Type, kwargs: Dict[str, int]) -> T: ...。检查这个答案:stackoverflow.com/a/60457872/286807
标签: python python-3.x python-typing