基本理解了,加上一点自己的理解,顺便问varchar100放在init函数里是什么意思
Topic source您好。对于一个新建的metaclass而言 atrr这个字典里,不是空的么?
for k,v in attrs.item(): 怎么成立?
for k,v in attrs.items(): if isinstance(v, Field): print('Found mapping: %s ==> %s' % (k, v))
#v是属于Field类的,因此v遇到print会自动调用__str__ attr是无序的字典,因此打印输出的时候也是无序的
mappings[k] = v
# 在当前类(比如User)中查找定义的类的所有属性,如果找到一个Field属性,就把它保存到一个__mappings__的dict中,
# 同时从类属性中删除该Field属性,否则,容易造成运行时错误(实例的属性会遮盖类的同名属性);
for k in mappings.keys():
attrs.pop(k)
因为user类是带着自己的一堆属性,去找它的爷爷ModelMetaclass,说,你给我弄出个user类来。 当我们看到class user的时候,实际上user这个类,还没有建立。程序先要需找建立办法。
- 1
一口白酒二两猪头肉
我知道在SQL里varchar100是限制字段内容的类型,但是放在init函数里怎么解释,init函数的参数不是只能是类的属性么,字符串可以作为类的属性么?