生成和解析对象路径。
项目描述
ObjectPath
此包包含以下两项内容:
z3c.objpath.interfaces.IObjectPath接口。
一些辅助函数,用于构建(相对)对象路径,位于z3c.objpath.path中。
想法是,一个特定的应用程序可以实现一个满足 IObjectPath 接口的实用程序,这样就可以以统一的方式构建对象的路径。实现可以使用 zope.traversing 完成,但在某些情况下,您可能需要特定于应用程序的对象路径。在这种情况下,z3c.objpath.path 中的函数可能很有用。
我们将有一个简单的项目
>>> class Item(object): ... __name__ = None ... __parent__ = None ... def __repr__(self): ... return '<Item %s>' % self.__name__
让我们创建一个类似于容器对象的东西
>>> class Container(Item): ... def __init__(self): ... self._d = {} ... def __setitem__(self, name, obj): ... self._d[name] = obj ... obj.__name__ = name ... obj.__parent__ = self ... def __getitem__(self, name): ... return self._d[name] ... def __repr__(self): ... return '<Container %s>' % self.__name__
现在让我们创建一个结构
>>> root = Container() >>> root.__name__ = 'root' >>> data = root['data'] = Container() >>> a = data['a'] = Container() >>> b = data['b'] = Container() >>> c = data['c'] = Item() >>> d = a['d'] = Item() >>> e = a['e'] = Container() >>> f = e['f'] = Item() >>> g = b['g'] = Item()
我们将练习两个函数,即 path 和 resolve,这两个函数是彼此的逆函数
>>> from z3c.objpath import path, resolve
我们可以从 root 创建到 a 的路径
>>> path(root, a) '/root/data/a'
我们也可以再次解析它
>>> resolve(root, '/root/data/a') <Container a>
我们也可以从 data 创建到 a 的路径
>>> path(data, a) '/data/a'
并且再次解析它
>>> resolve(data, '/data/a') <Container a>
我们可以创建一个更深的路径
>>> path(root, f) '/root/data/a/e/f'
并解析它
>>> resolve(root, '/root/data/a/e/f') <Item f>
路径 ‘/’ 指向根对象
>>> resolve(root, '/') <Container root>
如果我们无法构建路径,则会出错
>>> path(e, a) Traceback (most recent call last): ... ValueError: Cannot create path for <Container a>
如果我们无法解析路径,也会出错
>>> resolve(root, '/root/data/a/f/e') Traceback (most recent call last): ... ValueError: Cannot resolve path /root/data/a/f/e
z3c.objpath 更新
2.0 (2023-08-21)
停止支持 Python 2.7、3.5、3.6。
1.3 (2022-12-02)
添加对 Python 3.7、3.8、3.9、3.10、3.11 的支持。
1.2 (2018-06-14)
添加对 Python 3.5、3.6、PyPy 和 PyPy3 的支持。
1.1 (2012-10-13)
为 z3c 添加命名空间声明。
添加了 test 额外内容,因为测试需要 zope.testing。
1.0 (2008-04-15)
首次公开发布。
项目详细信息
下载文件
下载适合您平台的文件。如果您不确定选择哪个,请了解有关 安装包 的更多信息。
源分发
z3c.objpath-2.0.tar.gz (6.8 kB 查看哈希值)
构建分发
z3c.objpath-2.0-py3-none-any.whl (7.1 kB 查看哈希值)