如何键入提示可能包含文字 class 的变量
How can I type hint a variable that might contain a literal class
我正在向 vertica_python
的存根添加一些类型提示。其中一个函数在内部接受以下参数 (cursor_type
):
def row_formatter(self, row_data):
if self.cursor_type is None:
return self.format_row_as_array(row_data)
elif self.cursor_type in (list, 'list'):
return self.format_row_as_array(row_data)
elif self.cursor_type in (dict, 'dict'):
return self.format_row_as_dict(row_data)
else:
raise TypeError('Unrecognized cursor_type: {0}'.format(self.cursor_type))
因此此函数需要 'list'、'dict'、type 列表或 type 字典。我想使用 Optional[Literal[list, dict, 'list', 'dict']],但这不受支持:
Type arguments for "Literal" must be None, a literal value (int, bool, str, or bytes), or an enum value
有什么方法可以达到我的目的吗?
您可以输入提示 Union[None, Type[list], Type[dict], Literal["list", "dict"]]
(从键入中导入联合和类型)
请注意,因为这也会接受列表或字典的子类
我正在向 vertica_python
的存根添加一些类型提示。其中一个函数在内部接受以下参数 (cursor_type
):
def row_formatter(self, row_data):
if self.cursor_type is None:
return self.format_row_as_array(row_data)
elif self.cursor_type in (list, 'list'):
return self.format_row_as_array(row_data)
elif self.cursor_type in (dict, 'dict'):
return self.format_row_as_dict(row_data)
else:
raise TypeError('Unrecognized cursor_type: {0}'.format(self.cursor_type))
因此此函数需要 'list'、'dict'、type 列表或 type 字典。我想使用 Optional[Literal[list, dict, 'list', 'dict']],但这不受支持:
Type arguments for "Literal" must be None, a literal value (int, bool, str, or bytes), or an enum value
有什么方法可以达到我的目的吗?
您可以输入提示 Union[None, Type[list], Type[dict], Literal["list", "dict"]]
(从键入中导入联合和类型)
请注意,因为这也会接受列表或字典的子类