首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >脑属性与ipdb自动完成

脑属性与ipdb自动完成
EN

Stack Overflow用户
提问于 2015-07-22 11:45:40
回答 1查看 114关注 0票数 3

为什么ipdb会话不显示具有自动完成功能的大脑的所有属性?例如,brain.UID存在,但ipdb自动完成中没有列出它。大脑密码上有黑魔法吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-07-22 12:34:40

使用ipdb,您可以自动完成大脑的所有属性:

代码语言:javascript
复制
>>> dir(brain)
['__add__', '__allow_access_to_unprotected_subobjects__', '__class__', '__cmp__', '__contains__', '__delattr__', '__delitem__', '__delslice__', '__dict__', '__doc__', '__format__', '__getattribute__', '__getitem__', '__getslice__', '__getstate__', '__hash__', '__implemented__', '__init__', '__len__', '__module__', '__mul__', '__new__', '__of__', '__providedBy__', '__provides__', '__record_schema__', '__reduce__', '__reduce_ex__', '__repr__', '__rmul__', '__setattr__', '__setitem__', '__setslice__', '__setstate__', '__sizeof__', '__str__', '__subclasshook__', '__weakref__', '_unrestrictedGetObject', 'getObject', 'getPath', 'getRID', 'getURL', 'has_key']

大脑的元数据并不直接存储在“大脑”上。它们存储在目录上的Btree (data属性)中。您可以访问存储在数据存储through (大脑)中的所有信息。

因此,如果您试图访问大脑中不存在的属性,如果密钥可用,它将尝试从元数据存储中返回值,否则将引发AttributeError

魔法就发生在这里(ZCatalog)的某个地方。

还请检查第77行:

目录维护BTree of object meta_data,以便在结果页上方便地显示。meta_data属性被转换为脑对象,并由searchResults返回。

portal_catalog工具的ZMI中,有一个‘metadata’选项卡,它显示所有可访问的元数据信息。

更新:

正在玩目录:

代码语言:javascript
复制
>>> plone = app.Plone
>>> catalog = plone.portal_catalog
>>> _catalog = catalog._catalog
>>> brain = catalog()[0]

# Metadata are stored in the data BTree, key is the RID of the brain.
>>> rid = brain.getRID()
>>> rid
704953343

>>> _catalog.data
<BTrees.IOBTree.IOBTree object at 0x10b158150>

>>> _catalog.data[rid]
# The UID is part of this tuple.
('2015-07-22T09:27:09+02:00', 'admin', '2015-07-22T15:12:07+02:00', '', 'None', 'None', '2015-07-22T15:12:07+02:00', (), 'xxx', u'xxx', '38e87a4b80704681b60781b66d37346c', DateTime('2015/07/22 09:27:9.236886 GMT+2'), DateTime('1969/12/31 00:00:00 GMT+2'), Missing.Value, Missing.Value, DateTime('2499/12/31 00:00:00 GMT+2'), '', 'xxx', '0 KB', Missing.Value, 'xxx', True, ('admin',), Missing.Value, 'Dexterity Container', DateTime('2015/07/22 15:12:7.787001 GMT+2'), 'xxx', Missing.Value, Missing.Value, Missing.Value, 0, None, (), Missing.Value, Missing.Value, Missing.Value, Missing.Value)
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31562177

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档