Python 皮蒙戈:“为什么?”;“自我收集”数据库;?
在Flask PyMongo中,他们使用Python 皮蒙戈:“为什么?”;“自我收集”数据库;?,python,mongodb,flask,Python,Mongodb,Flask,在Flask PyMongo中,他们使用self.\u Collection\u database表示此集合对象所属的数据库对象: class Collection(collection.Collection): """Custom sub-class of :class:`pymongo.collection.Collection` which adds Flask-specific helper methods. """ def __getattr__(se
self.\u Collection\u database
表示此集合对象所属的数据库对象:
class Collection(collection.Collection):
"""Custom sub-class of :class:`pymongo.collection.Collection` which
adds Flask-specific helper methods.
"""
def __getattr__(self, name):
attr = super(Collection, self).__getattr__(name)
if isinstance(attr, collection.Collection):
db = self._Collection__database
return Collection(db, attr.name)
return attr
为什么self.\u集合\u数据库
不是self.\u数据库
test <a>and <i>
测试和测试
皮蒙戈并不是随意选择这个名字。
该名称是以下各项的结果:
因为类私有成员有一个有效的用例(即
避免名称与子类定义的名称发生名称冲突)
对这种机制的支持是有限的,称为名称混乱。任何
垃圾邮件格式的标识符(至少两个前导下划线,至少
大多数尾随下划线)在文本上替换为
\u classname\uu spam
,其中classname是当前类名,去掉前导下划线
在中,属性被定义为self.\uuuu数据库
,Python将名称(到self.\uu类名\uuu属性名
)进行“篡改”,以便任何子类都不会用自己对自己的self.\uuu数据库
属性的赋值进行覆盖