python 如何实现链式调用

python 如何实现链式调用

在 jquery 中可以使用链式调用,代码简洁优雅。比如:

$("a").addClass("test").show().html("foo")

在 redis-py 的 pipeline 中也可以链式调用,比如

pipe.set('foo', 'bar').sadd('faz', 'baz').incr('auto_number').execute()

那么是如何实现的呢?

很简单,返回对象自己就行了,即 return self

class Person:
    def name(self, name):
        self.name = name
        return self

    def age(self, age):
        self.age = age
        return self
     
    def show(self):
        print(f"My name is {self.name} and I am {self.age} years old.")

p = Person()
p.name("Li Lei").age(15).show()
updated_at 28-08-2018