我想确保输入与输出相同,我尝试使用TypeVar来绑定类型,但我无法让它工作...
from typing import TypeVar, Union, Any
import pandas as pd
class my_Class():
def __init__(self):
self.days = []
self.count = 0
def __call__(self,
input: Union[dict, list[dict]],
*args,
**kwargs
) -> Union[dict, list[dict]]:
"some code"
我尝试过的:
from typing import TypeVar, Union, Any
import pandas as pd
T = TypeVar("T", bound=Union[dict, list[dict]])
class my_Class():
def __init__(self):
self.days = []
self.count = 0
def __call__(self, input: T, *args, **kwargs) -> T:
"some code"
它说它期待T,得到的不是Dict就是List,但是我想既然我给它定了界,它会查看我在T中定义的并集,有人能告诉我哪里做错了吗?
2条答案
按热度按时间pgpifvop1#
您需要一个 constrained 类型变量,而不是绑定类型变量,以便要求在两种情况下将同一类型绑定到
T
。使用联合绑定,参数和返回类型都被限制为三个给定类型中的一个,但是
T
的每次使用都可以独立于另一个绑定。此外,静态地说,您不知道将返回三个类型中的 * 哪一个 *。使用约束类型变量,在对__call__
的单个调用内的每次出现中,相同的类型必须被绑定到T
。下面是一个简单的例子:
s3fp2yjn2#
问题可能是您使用的是
list
而不是List
,以及dict
而不是Dict
;尝试从typing
导入它们。