嵌套类属性值修改问题:Tree类修改Leaf属性未生效求助
问题原因
你定义的change_color方法根本没被调用!实例化Tree后,叶子的color属性还是初始化时的默认值None,所以自然打印不出'blue'。
修复代码
只需要在打印前调用change_color方法即可:
class Leaf: def __init__(self, size = None, color = None): self.size = size self.color = color class Tree: def __init__(self): self.leafs = [] self.leafs.append(Leaf(size=1)) self.leafs.append(Leaf(size=2)) def change_color(self): self.leafs[0].color = 'blue' self.leafs[1].color = 'green' oak = Tree() oak.change_color() # 新增这行调用修改颜色的方法 print(oak.leafs[0].color)
运行这段代码后,就会输出预期的blue。
可选优化
如果希望叶子创建后直接拥有指定颜色,也可以把颜色设置逻辑整合到Tree的初始化方法里,或者给Leaf类的color参数设置默认值,比如:
class Leaf: def __init__(self, size=None, color='blue'): # 直接设置默认颜色 self.size = size self.color = color
不过这需要根据你的实际需求选择,当前问题的核心还是遗漏了方法调用。
内容的提问来源于stack exchange,提问作者paulo01
相关产品推荐
相关产品推荐

