class A(object):
a: int
class B(object):
u: List[A]
>>> from t2 import B
>>> B.__annotations__
{'u': typing.List[t2.A]}
请问接下来我应该如何感知到u是个列表,以及列表中元素类型是A?
需求背景是我想基于类型标注实现一个自动object2dict和dict2object,类似这样:
def clsannotation(cls):
fields = list(cls.__annotations__.items())
def from_dict(self, data):
for fname, ftype in fields:
if ftype in (int, str, float):
setattr(self, fname, data.get(fname))
elif ftype is List and ftype.internal_type ##这里怎么写。。。
setattr(self, fname, [ftype.internal_type.from_dict(u) for u
in data.get(fname) or []])
....
cls.from_dict = from_dict
return cls
@clsannotation
class MyDataClass(object):
a: int # and other 'member declarations'
--
修改:CKevin FROM 114.251.196.*
FROM 114.251.196.*