我目前正在编写代码,需要知道给定类型的注释是否是可迭代的(例如ta = typing.List[str])。
我在等s.th。就像这样起作用:
if isinstance(ta, typing.List):
# do s.th.但ta属于typing._GenericAlias型,与typing.List没有多大关系。
相反,我必须使用‘’属性,如下所示:
if getattr(ta, '__origin__', None) == list:
# do s.th.这真的是正确的方法吗?
发布于 2020-04-05 15:53:34
在CPython 3.8中:
from typing import_GenericAlias
# Now, let's suppose that you have a class "cls"
name = "your_attribute"
typ = cls.__annotations__[name]
if isinstance(typ, _GenericAlias) and typ._name == "List":
print("This is a list type")_GenericAlias是一个无文档的受保护/生成的类。这是一个实现细节。我不知道在运行时访问类型信息的任何可靠方法。
https://stackoverflow.com/questions/51953750
复制相似问题