37,719
社区成员
发帖
与我相关
我的任务
分享
#参照类,工作正常,返回值如预期
class test:
def __init__(self, a, b):
self.a = a
self.b = b
self.s = None
def ser(self, c):
self.s = [self.a ,self.b , c]
try:
123 + '123'
except:
return self.s
#下面类的实例方法为什么返回值为None?????????
#测试用数据
#(城市ID,上级城市ID,城市序号,城市名称
departments = [(2, 1, 1, '北京'),(3, 1, 2, '上海'),(4, 1, 3, '广州'),(5, 1, 4, '湖南'),(6, 5, 1, '长沙'),(7, 1, 5, '河北')]
#(用户ID,用户所在城市ID,用户序号,用户姓名)
users = [(1, 2, 1, 'qq'),(2, 3, 2, 'aa'),(3, 4, 3, 'zz'),(4, 5, 4, 'ww'),(5, 6, 5, 'ss'),(6, 7, 6, 'xx')]
#通信录的根节点
root=(1,None,1,'中国')
class StructureTree:
def __init__(self, deps, users):
self.deps = deps
self.users = users
self.node_order = []
self.stack = []
def select_in_tuple(self, list, value,index):
ck = []
for node in list:
if node[index] == value:
ck.append(node)
ck.sort(key=lambda node: node[2])
return ck
def pile_tree(self, node):
users=self.select_in_tuple(self.users, node[0],1)
self.node_order.extend(users)
children = self.select_in_tuple(self.deps, node[0],1)
if len(children) == 0:
try:
next_node=self.stack.pop()
self.node_order.append(next_node)
self.pile_tree(next_node)
except:
print('return self.node_order->',self.node_order) #返回前打印值为正常,返回后却成了None
return self.node_order
elif len(children)==1:
self.node_order.append(children[0])
self.pile_tree(children[0])
else:
self.stack.extend(children[:0:-1])
self.node_order.append(children[0])
self.pile_tree(children[0])
a = test(1, 2)
print(a.ser(3))
st=StructureTree(departments,users)
print(st.pile_tree(root))
>>>[1, 2, 3]
>>>return self.node_order-> [(2, 1, 1, '北京'), (1, 2, 1, 'qq'), (3, 1, 2, '上海'), (2, 3, 2, 'aa'), (4, 1, 3, '广州'), (3, 4, 3, 'zz'), (5, 1, 4, '湖南'), (4, 5, 4, 'ww'), (6, 5, 1, '长沙'), (5, 6, 5, 'ss'), (7, 1, 5, '河北'), (6, 7, 6, 'xx')]
>>>None