这是我的第一个问题,所以我希望我不要错过任何重要的领域
我不熟悉python类型提示,我不知道如何为用于项目的字典提供类型提示
字典中有字符串作为键。值是具有两个元素的元组:数据类型和可调用,用于获取与元组的第一个元素具有相同数据类型的对象。对于每个键,数据类型可以是任意,但其相应的可调用项必须返回此数据类型的对象
换句话说,字典某种程度上是一个映射,使您能够使用可调用函数从对象中减去字段。它还告诉您减去的对象的预期数据类型(如果您希望在数据库中动态创建一个表来存储对象的所有字段,这可能很有用)。我有一个虚拟的例子如下:
class VeryComplexClass:
def __init__(self):
self.string_ivar = "internal variable"
self.bool_ivar = True
def __str__(self):
return "string representation"
def __bool__(self):
return False
object = VeryComplexClass()
my_dict = { # This is the dictionary I want to provide type hinting to
"i_string": (str, lambda x: x.string_ivar),
"i_bool": (bool, lambda x: x.bool_ivar),
"o_string": (str, lambda x: str(x),
"o_bool": (bool, lambda x: bool(x),
"object": (VeryComplexClass, lambda x: x),
}
my_dict["i_string"][1](object) # It returns "internal variable"
my_dict["i_bool"][1](object) # It returns True
my_dict["o_string"][1](object) # It returns "string representation"
my_dict["o_bool"][1](object) # It returns False
my_dict["object"][1](object) # It returns the object itself
到目前为止,我有以下几点:
from typing import Any, Callable, Dict, Tuple, Type, TypeVar
T = TypeVar('T')
my_dict: Dict[str, Tuple[Type[T], Callable[[Any], T]] = {
"i_string": (str, lambda x: x.string_ivar),
"i_bool": (bool, lambda x: x.bool_ivar),
"o_string": (str, lambda x: str(x),
"o_bool": (bool, lambda x: bool(x),
}
但是,我不能100%确定这是我想要的:
提前谢谢
目前没有回答
相关问题 更多 >
编程相关推荐