解释表述不对
Topic sourceclass Model(dict):
def __init__(self, **kw):
super(Model, self).__init__(**kw)
class User(Model):
id = 'class attr'
>>> u.id
'class attr'
>>> u['id']
12345
>>>
class Model(dict):
def __init__(self, **kw):
super(Model, self).__init__(**kw)
class User(Model):
id = 'class attr'
>>> u = User(id=12345)
>>> u.id
'class attr'
>>> u['id']
12345
>>>
- 1
一际孤鸿_FBW
其中第二点说明:
这就句话说得不对,因为Model继承了dict,属于类字典,同样User也是类字典。因为初始化User对象时,其实就是初始化一个字典,但存在类属性名与 字典中的键 重名的情况,这样u.id 访问倒是IntegerField('id'),而不是所期望的u['id'],所以在元类中要删除id,name,email,password这些类属性,并通过
的定制方法,使其u.id 等价于 u.['id']