一个点可访问的字典(一个 la JavaScript 对象)
项目描述
Bunch 是一个支持属性样式访问的字典,类似于 JavaScript。
>>> b = Bunch() >>> b.hello = 'world' >>> b.hello 'world' >>> b['hello'] += "!" >>> b.hello 'world!' >>> b.foo = Bunch(lol=True) >>> b.foo.lol True >>> b.foo is b['foo'] True
字典方法
A Bunch 是dict的子类;它支持dict所做的所有方法:
>>> b.keys() ['foo', 'hello']
包括update():
>>> b.update({ 'ponies': 'are pretty!' }, hello=42)
>>> print repr(b)
Bunch(foo=Bunch(lol=True), hello=42, ponies='are pretty!')
以及迭代:
>>> [ (k,b[k]) for k in b ]
[('ponies', 'are pretty!'), ('foo', Bunch(lol=True)), ('hello', 42)]
和“splats”:
>>> "The {knights} who say {ni}!".format(**Bunch(knights='lolcats', ni='can haz'))
'The lolcats who say can haz!'
序列化
Bunches 愉快且透明地序列化为 JSON 和 YAML。
>>> b = Bunch(foo=Bunch(lol=True), hello=42, ponies='are pretty!')
>>> import json
>>> json.dumps(b)
'{"ponies": "are pretty!", "foo": {"lol": true}, "hello": 42}'
如果存在 JSON 支持(json或simplejson),Bunch将有一个toJSON()方法,该方法将对象作为 JSON 字符串返回。
如果您安装了PyYAML,Bunch 会尝试向各种 YAML 表示器注册自己,以便可以透明地转储和加载 Bunches。
>>> b = Bunch(foo=Bunch(lol=True), hello=42, ponies='are pretty!')
>>> import yaml
>>> yaml.dump(b)
'!bunch.Bunch\nfoo: !bunch.Bunch {lol: true}\nhello: 42\nponies: are pretty!\n'
>>> yaml.safe_dump(b)
'foo: {lol: true}\nhello: 42\nponies: are pretty!\n'
此外,Bunch 实例将有一个toYAML()方法,该方法使用yaml.safe_dump()返回 YAML 字符串。此方法还替换__str__如果存在,因为我发现它更具可读性。您可以通过简单的赋值恢复到 Python 对__repr__的默认使用: Bunch.__str__ = Bunch.__repr__。Bunch 类还有一个静态方法Bunch.fromYAML(),它从 YAML 字符串中加载一个 Bunch。
最后,Bunch 可以轻松且递归地转换为 ( unbunchify()、Bunch.toDict() ) 并从 ( bundleify()、Bunch.fromDict() ) 转换为普通的dict,从而可以轻松地以其他格式干净地序列化它们。
各种各样的
从这个模块导入 *是安全的。你会得到:Bunch、bundleify和unbunchify。
充足的文档测试:
$ python -m bunch.test -v
反馈
在http://github.com/dsc/bunch打开一张票,或者在dsc @ less给我发一封电子邮件。。 _
项目详情
下载文件
下载适用于您平台的文件。如果您不确定要选择哪个,请了解有关安装包的更多信息。
源分布
bundle-1.0.1.zip的哈希值
| 算法 | 哈希摘要 | |
|---|---|---|
| SHA256 | 3c554816ba260634b55c1edf8de6467d8122dbd18ec20f323e181869bc48ac93 |
|
| MD5 | 1d89b4e6ac970368cba8d8d47b2ba915 |
|
| 布莱克2-256 | cc56ceef9c8c12600a1ceb3dcefdd9e5094c72fbdba0c3af785b4a69205022c1 |