跳转到主要内容

点表示法对象

项目描述

DotObject v 1.3.1

点表示法对象

Dot允许您使用点表示法格式定义对象。

您需要继承Dot并定义自己的加载和可选的保存方法,才能使用点表示法对象。

背景

点表示法对象最初是为Python的Redis客户端设计的基库。因此,“加载”和“保存”名称由此而来。想法是拥有一个Python对象,只需编写obj.item="value",它就会将redis键“obj.item”设置为“value”值。一旦检测到您正在检索值,它会从Redis获取最新版本。但在同时,它为您提供了一个懒惰的对象,直到它实际需要从Redis获取值。

因此,点表示法对象本质上是一个懒惰对象,一旦其“加载”和“保存”方法被定义,它将在对象保存或检索时运行这些方法。

参数

root_name字符串,可选。

用于覆盖Dot对象根名称。

int_starts_with: 字符串,可选。默认:i

用于识别整数部分,因为Python不允许整数作为属性。

返回

一个将在实际使用时评估的懒惰对象。

示例

定义自己的Dot
>>> from dot import Dot
>>> class This(Dot):
...     def __init__(self, *args, **kwargs):
...         super(This, self).__init__(*args, **kwargs)
...         self.items = {}
...     def load(self, paths):
...         return {i: self.items[i] if i in self.items else "value %s" % i for i in paths}
...     def save(self, path, value):
...         self.items[path] = value
...
创建Dot对象
>>> this = This()
>>> aa = this.part1.part2.part3.part4
>>> aa
<Lazy object: this.part1.part2.part3.part4>
>>> print(aa)
value this.part1.part2.part3.part4
>>> aa
value this.part1.part2.part3.part4
Dot对象会批量评估
>>> this = This()
>>> aa = this.part1
>>> aa
<Lazy object: this.part1>
>>> bb = this.part2
>>> bb
<Lazy object: this.part2>
>>> print(aa)
value this.part1
>>> aa
value this.part1
>>> bb
value this.part2
处理包含整数部分的路径
>>> bb = this.part1.part2.i120
>>> bb
<Lazy object: this.part1.part2.120>
>>> print bb
value this.part1.part2.120
处理类似于字典键的点
>>> cc = this['part1.part2.part4']
>>> cc
<Lazy object: this.part1.part2.part4>
>>> dd = this['part1.%s.part4' % 100]
>>> dd
<Lazy object: this.part1.100.part4>
>>> path = 'part1.part2'
>>> this[path] = 'This was set by a dynamic key.'
>>> this.path
This was set by a dynamic key.
保存点
>>> this.part1.part2.part3.part4 = "new value"
>>> zz = this.part1.part2.part3.part4
>>> zz
new value
更改根名称
>>> class That(This):
...    pass
>>> that = That()
>>> aa = that.something
>>> print(aa)
value that.something
>>> bb = this.something
>>> bb
<Lazy object: this.something>
刷新缓存
>>> aa = this.part1
>>> print aa
value this.part1
>>> bb = this.part1 # reads from the cache
>>> this.flush()
>>> bb = this.part1 # Will evaluate this.part1 again

项目详情


下载文件

下载适合您平台的文件。如果您不确定选择哪个,请了解有关安装包的更多信息。

源分发

dotobject-1.3.1.tar.gz (8.6 kB 查看哈希)

上传时间

构建分发

dotobject-1.3.1-py3-none-any.whl (9.4 kB 查看哈希)

上传时间 Python 3

由以下支持