链式调用需方法返回self,仅修改状态的方法适用,查询方法应返回实际值;注意副作用、可读性与调试便利性。
让类方法支持链式调用,核心是每个方法最后 return self,使调用后仍返回当前实例对象,从而能继续调用其他方法。
这是最直接的方式。只要方法不需返回其他语义结果(比如计算值),就统一返回 self:
return self
self 是当前实例,不是新对象,所以是“原对象上连续操作”不是所有方法都适合链式。通常:
self,支持链式get_name()、cou
nt())应返回实际值,不参与链式filter() 返回 self,filtered_list() 返回结果列表链式调用虽简洁,但容易掩盖副作用或逻辑顺序:
with_timeout(5).retry(3).execute() 比 set_t(5).set_r(3).run() 更易懂比如构建一个字符串处理器:
class StrBuilder:
def __init__(self, text=""):
self.text = text
def upper(self):
self.text = self.text.upper()
return self
def add(self, s):
self.text += s
return self
def len(self): # 查询方法,不返回 self
return len(self.text)使用:
result = StrBuilder("hello").add(" world").upper().len() # → 12