Python类方法链式调用实现求助:Shape类代码修正
修正后的Shape类实现
你的代码无法实现链式调用的核心问题是set方法没有返回实例本身,另外还有一处多余的属性赋值。下面是修正后的代码:
class Shape: def __init__(self, colour=None): self._colour = colour # 私有颜色属性,支持默认值None def colour(self): print(self._colour) return self # 可选:如果需要colour后继续链式调用,添加返回self def set(self, new_colour): self._colour = new_colour return self # 返回实例本身,实现链式调用
关键修正点:
set方法末尾添加return self:每次调用set后都会返回当前Shape实例,这样就能接着调用其他方法(比如colour或另一个set),实现链式调用。- 移除
set方法里多余的self.new_colour = new_colour:我们只需要维护私有属性_colour即可,不需要额外的公共属性。
测试验证:
s = Shape() s.set('Red').colour() # 输出: Red s.set('Yellow').set('Blue').colour() # 输出: Blue
(注:你提供的示例中第二个输出写的是Yellow,这应该是笔误,连续调用两次set后,最后一次设置的Blue才会是当前颜色)
内容的提问来源于stack exchange,提问作者thicccjk
相关产品推荐
相关产品推荐

