我正在编写决策树,我决定一个很好的实现是分支的类/对象结构(至少在C ++中)。为了简单起见,我要将其分解为必要的部分:
class DecisionTreeBranch:
def __init__(self):
parent = None
leftBranch = None
rightBranch = None
其中parent
声明了超级决策的方式,leftBranch
,rightBranch
定义了以下决策。
我正在尝试做什么:
现在向下走不是问题,而是向上移动:假设这个树首先由左侧分支定义,所以如果我最终在最后的叶中。我向上迈出一步,走右边的树枝继续建造树木(如果我走到上面,左右定义了,我将向上迈出另一步,依此类推。)
目的是通过以下三个参数遍历树:parent
(向上)和leftBranch
,rightBranch
(向下)
问题
如果我采取例如C ++然后这不会是一个问题,我将使用 call-by-reference 定义父级。但是我最近开始用Python编写类,不幸的是我总是以按值调用表达式结束,确保上述分支的所有信息都丢失了。
基本上我正在寻找类似的东西:
[...]
# define way to former branch
&curDecision.parent = &oldDecision
oldDecision = curDecision
# continue with the next/new decision on the current level
curDecision = DecisionTreeBranch()
[...]
任何人都可以帮助我吗?
亲切的问候
答案 0 :(得分:2)
以下是通过引用调用的示例。您还可以看到,由于多个构造函数不能在python中使用,因此在 init 方法中使用了关键字参数:
class Maximum:
def __init__(self,x = None,y = None):
self.x = x
self.y = y
def max(self,Maximum):
if Maximum.x > Maximum.y:
print('{0} is maximum.'.format(Maximum.x))
else:
print('{0} is maximum.'.format(Maximum.y))
m1 = Maximum()
m2 = Maximum(3,8)
m1.max(m2)
答案 1 :(得分:1)
您始终可以使用父键,左键,右键传递字典。您将能够修改字典并通过键访问结构。