1. 封装数据类
class Field:
def __init__(self, default_value, alias_name):
self.default_value = default_value # 默认值
self.alias_name = alias_name # 别名
class DataMeta(type):
def __new__(cls, name, bases, attrs):
mapping = dict()
log.info(f"attrs_info: {attrs}")
for k, v in attrs.items():
if isinstance(v, Field):
default_value = v.default_value
alias_name = v.alias_name
if isinstance(alias_name, tuple):
for item in alias_name:
mapping[item] = k
else:
mapping[alias_name] = k
attrs[k] = default_value
log.info(f"__mapping__: {mapping}")
attrs["__mapping__"] = mapping
return super().__new__(cls, name, bases, attrs)
class BaseData(object, metaclass=DataMeta):
&