def attr_struct(cls=None, vals_to_attrs=False, defaults=..., **kws):
if not cls:
return ft.partial( attr_struct,
vals_to_attrs=vals_to_attrs, defaults=defaults, **kws )
try:
keys = cls.keys
del cls.keys
except AttributeError: keys = list()
else:
attr_kws = dict()
if defaults is not ...: attr_kws['default'] = defaults
if isinstance(keys, str): keys = keys.split()
for k in keys: setattr(cls, k, attr.ib(**attr_kws))
if vals_to_attrs:
for k, v in vars(cls).items():
if k.startswith('_') or k in keys or callable(v): continue
setattr(cls, k, attr.ib(v))
kws.setdefault('hash', not hasattr(cls, '__hash__'))
kws.setdefault('slots', True)
return attr.s(cls, **kws)
utils.py 文件源码
python
阅读 18
收藏 0
点赞 0
评论 0
评论列表
文章目录