2016-02-18 92 views
2

使用bunch,可以遞歸地使用Bunch嗎?可以遞歸使用Python的Bunch嗎?

例如:

from bunch import Bunch 
b = Bunch({'hello': {'world': 'foo'}}) 
b.hello 
>>> {'world': 'foo'} 

所以,很顯然:

b.hello.world 
--------------------------------------------------------------------------- 
AttributeError       Traceback (most recent call last) 
<ipython-input-5-effaad77643b> in <module>() 
----> 1 b.hello.world 

AttributeError: 'dict' object has no attribute 'world' 

我知道我能做到......

b = Bunch({'hello': Bunch({'world': 'foo'})}) 

...那是可怕的。

回答

2

挖掘源代碼,這可以用fromDict方法完成。

b = Bunch.fromDict({'hello': {'world': 'foo'}}) 
b.hello.world 
>>> 'foo' 
1

Bunch.fromDict可以爲你做這個魔術:

>>> d = {'hello': {'world': 'foo'}} 
>>> b = Bunch.fromDict(d) 
>>> b 
Bunch(hello=Bunch(world='foo')) 
>>> b.hello 
Bunch(world='foo') 
>>> b.hello.world 
'foo'