最近在看一些Python算法有关的东西。
从最简单的树的实现说起,当树这样的数据结构被原型化,它往往会是一个非常有用且很灵活的类型。
这时候可以用一个Bunch的设计模式。
实现方式有很多,但是基本上都会具备以下要素:
# Bunch设计模式
class Bunch(dict):
def __init__(self, *args, **kwds):
super(Bunch, self).__init__(*args, **kwds)
self.__dict__ = self
你可以用命令行参数的形式创建相关对象,并设置任何属性:
x = Bunch(name='He', position='Club')
print(x.name)
输出结果:
He
由于它继承自dict类,我们可以自然而然地获得大量相关内容,比如相对属性值的遍历,或者是是查询一个属性是否存在:
x = Bunch(name='He', position='Club')
print(x.name)
T = Bunch
t = T(left=T(left="a", right="b"), right=T(left="c"))
print(t.left)
print(t.left.left)
print(t['left']['right'])
print("left" in t.right)
print("right" in t.right)
输出结果:
{'right': 'b', 'left': 'a'}
a
b
True
False
当然,该模式下不仅可用于树结构的创建,如果你希望有一个灵活的对象,并且属性可以从构造器中被动态设置时,也可以用该模式来实现。
谢谢各位关注,最近天气转冷,大家注意保暖,谨防感冒!