点表示法对象
项目描述
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 查看哈希)
关闭
dotobject-1.3.1.tar.gz的哈希
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 7e25720f6e1c00880b428bf5cfd5c19d12fd92eba420c9b0e7216931c086991f |
|
MD5 | 3346a44a3aeee70a40e8afbaf4e091ce |
|
BLAKE2b-256 | 8d82bf623bb4aec8863b3914baa37b21f0fd6e9c05ec315284cd136be1d4e131 |
关闭
dotobject-1.3.1-py3-none-any.whl的哈希
算法 | 哈希摘要 | |
---|---|---|
SHA256 | de5e792246b6378d53265b38d2c726b65bc40a0d50ee67275b8019caf7ee2394 |
|
MD5 | f8721a0bc6e606d960fe2bd8bf20d7f2 |
|
BLAKE2b-256 | 337db9be288a41e492da3f21aad2e303eac71ab814eb12c73fb93d1684af63f4 |