引用:

当树这样的数据结构被原型化(或者乃至于被定型)时,它往往会时一个非常有用而灵活的类型,允许我们在其构造器中设置任何属性。在这些情况下,我们会需要用到一种叫做“Bunch”的设计模式。

  

class Bunch(dict):
def __init__(self, *args, **kwargs):
super(Bunch, self).__init__(*args, **kwargs)
self.__dict__ = self

由于这个类直接继承dict类,所以我们可以自然而然地获得dict类地大量功能,比如对键/值的遍历,或者简单查询一个属性是否存在。

  

>>> x = Bunch(a="", b="", c="")
>>> print (x.a)
''
>>> print (x.b)
''
>>> print (x.c)
''

这样就构建好了树型结构,因为Bunch模式非常灵活,其属性可以动态设置,所以可以用该模型实现很多类型。

T = Bunch
t = T(left=T(left="",right=""),right=T(left="",right=""))
>>> t.left
{'left': '', 'right': ''}
>>> t.left.right
''
>>> t['left']['right']
''
>>> 'left' in t.right
True
>>> '' in t.right
False

最新文章

  1. YUV格式介绍
  2. 微信支付开发demo
  3. java.lang.ClassNotFoundException: org.apache.catalina.startup.VersionLoggerListener
  4. ArcGis for Android 工作与学习
  5. Eclipse使用tomcat的原理
  6. C#--静态字段
  7. CPU的内部架构和工作原理
  8. 使用System.arraycopy()实现数组之间的复制
  9. 按照自己的理解实现比特交换协议(alternating-bit protocol)
  10. mysql-5.7.10-winx64 安装时遇到的问题
  11. 在iOS中怎样创建可展开的Table View?(上)
  12. django 自定义标签
  13. C#程序中:如何向xml文件中写入数据和读取数据
  14. poj 2288 Islands and Bridges_状态压缩dp_哈密尔顿回路问题
  15. 《JAVASCRIPT高级程序设计》节点层次和DOM操作技术
  16. 结合GET(),POST()实现一个简单、完整的服务器
  17. 使用ultraiso制作启动盘安装windows操作系统
  18. linux基础之正则表达式
  19. 59.纯 CSS 创作彩虹背景文字
  20. Linux查看系统中socket状态

热门文章

  1. django-pymysql-封装的sql使用
  2. Docker搭建独立服务器
  3. document和javaScript内置对象
  4. 微信小程序页面跳转方法汇总
  5. Amazon面试题
  6. Django model.py表单设置默认值允许为空
  7. slam学习
  8. NET MVC 升级到5.1后,View视图中代码报错
  9. 编程技巧:使用异或操作符(XOR)交换两数值
  10. hiho1601最大分数 DP