我是Python的初学者,我正在努力更好地理解树木。为什么我不能在下面的函数f
中添加节点?我希望最终的打印返回值2
,而不是f(test)
中None
的错误。
class Testcls(object):
def __init__(self,data):
self.data= data
self.children = []
def add_child(self,obj):
self.children.append(obj)
def f(test):
data1 = test.data+1
test.add_child(Testcls(data1))
test = Testcls(1)
print f(test).data
答案 0 :(得分:0)
您案例中的最终打印实际上应该返回错误。函数f
不返回任何内容(因此如果您键入None
则为print f(test)
。要使用f
添加子项,您可以添加一个return语句:
def f(test):
data1 = test.data+1
test.add_child(Testcls(data1))
return test
现在返回您可以进一步访问和处理的对象test
,
f(test)
print test.children[0].data
由于它实际返回test
对象,您也可以调用它并直接使用它:
print (f(test).children)[0].data
您不必拥有return
语句 - f
仍会更改您发送给它的对象。如果您不想返回该对象,您只需要单独调用该函数,然后使用test
,如第二个代码段所示。