@
focusheart 非常感谢回答, 终于明白 self.key 为什么不行了。在 ModelMetaclass 的 __new__函数里没有确实没有将 key 处理为 instance property 。
但是还是有个问题:并不是所有 self.key 打印出来的值都是类中定义的 default 值,见输出:
[email protected] <StringField, varchar(50):None> <StringField, varchar(50):None> <StringField, varchar(500):None>
还有个问题:
最初我是用 getattr(self, key, None) 来获取属性,
class Model:
......
def __getattr__(self, key):
try:
return self[key]
print('-------\n getattr() called \n-------------')
......
发现 getattr 每次运行只被调用一次(我期待调用次数和 key 的个数一样),想知道 getattr 的调用顺序。
谢谢各位大神。