class ModelMetaclass(type): def __new__(cls, name,bases,attrs):# metaclass 的固定写法 if name == 'Model': # 这句话没看懂 return type.__new__(cls,name,bases,attrs) print('Found model: %s' % name) # 打印状态,接收到一个model mappings = dict() # 创建一个字典 命名为 mappings (映射) for k,v in attrs.items(): # iter attrs 里面是类的方法和属性?到底是方法还是属性? if isinstance(v,Field):# 判断 value 如果是 Field 那么 print('Found mapping: %s ==> %s' % (k,v)) mappings[k]=v # 在mappings 里建立键值对(写入字典 mappings) for k in mappings.keys(): # 遍历 mappings 字典的全部 key attrs.pop(k) # 从attrs里删除遍历到的 key->value(相关数据) attrs['__mappings__'] = mappings # 添加?替换?字典元素: __mappings__ -> mappings attrs['__table__'] = name # 同上 return type.__new__(cls,name,bases,attrs)
Sign in to make a reply
H桃J_wczjzl