跳转到主要内容

生成和解析对象路径。

项目描述

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()

我们将练习两个函数,即 pathresolve,这两个函数是彼此的逆函数

>>> 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 查看哈希值)

上传时间 Python 3

由以下赞助

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误记录 StatusPage StatusPage 状态页面