一个点可访问的字典(一个la javascript对象)

bunch的Python项目详细描述


bunch是一个支持属性样式访问的字典,一个la 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

字典方法

bunch是dict的一个子类;它支持adict所做的所有方法:

>>> 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!'

序列化

愉快地和透明地串接到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支持(jsonsimplejson),则Bunch将有一个toJSON()方法,该方法将对象作为json字符串返回。

如果您安装了PyYAML,bunch会尝试用各种yaml表示注册自己,以便可以透明地转储和加载bunch。

>>> 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类还有一个静态方法Bunch.fromYAML(),它从yaml字符串中加载一个bunch。

最后,bunch可以方便地递归地转换为(unbunchify()Bunch.toDict())和(bunchify()Bunch.fromDict())一个普通的dict,这样就很容易以其他格式对它们进行干净的序列化。

其他

  • 从这个模块import *是安全的。您将得到:Bunchbunchifyunbunchify

  • 大量的博士学位:

    $ python -m bunch.test -v
    

反馈

http://github.com/dsc/bunch开一张票,或者在dsc@less.ly给我发一封电子邮件。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
编译器构造为什么在Java中允许初始化对Null的引用?   java手动调用javax的actionPerformed。摆动计时器   使用git分支的java Maven版本控制   Java8句子流   java JPA OneToOne和OneToMany实体实例化/创建   java如何将值添加到列表<Map<String,Object>>?   java如何使用ComboBox在一个框架内更改JPanel。getSelectedIndex()   java在比较XML和xmlunit时忽略文本差异   java无法从其他pc连接到本地主机   Java中分配对象id的优雅方式   Java中静态变量的使用   java试图从Neteller获取OAuth访问令牌时产生错误:“服务器返回HTTP响应代码:401表示URL”   Java:基元类型是否会影响性能?   java可以让hasNext()不区分大小写吗?   基于AutoCompleteTextView建议属性或AutoCompleteTextView值的java Android搜索   java流文件到firefox浏览器有时无法打开应用程序对话框   在没有ArrayList的Java中返回数组中的搜索结果   复制java。木卫一。IOException:数据错误(CRC)   java为什么我在尝试删除Facebook测试用户时会出现“方法未实现”错误   java如何使用JNA调用SetProcessReliationPolicy