考虑以下代码:
>>> class A(mongoengine.Document):
... d = mongoengine.DictField()
>>> a = A()
>>> a.d['n'] = 1
>>> a.d['n']
1
到目前为止一切顺利。然后:
>>> a.d['ns'] = []
>>> a.d['ns']
[]
>>> a.d['ns'].append(a.d['n'])
>>> a.d['ns']
[1]
>>> a.d['ns'].append(a.d['n'])
>>> a.d['ns']
[1]
这很奇怪。让我们再试一次:
>>> a.d['ns'] = [0]
>>> a.d['ns']
[0]
>>> a.d['ns'].append(a.d['n'])
>>> a.d['ns']
[0]
>>> a.d['ns'].append(1)
>>> a.d['ns']
[0, 1]
似乎问题出现在同一个表达式的__getitem__中两次;如果列表为空,则添加该项;如果不是,没有任何反应;但仅适用于__getitem__ed项目。发生了什么事?
感谢。
修改
我使用PyPi上最新的MongoEngine,即0.8.7。