Python 方法/函数链

Jas*_*ca1 3 python chaining

在Python中,是否可以将类方法和函数链接在一起?例如,如果我想实例化一个类对象并调用它影响实例变量状态的方法,我可以这样做吗?这是一个例子:

class Test(object):
    def __init__(self):
        self.x = 'Hello'

    @classmethod
    def make_upper(y):
        y.x = y.x.upper()
Run Code Online (Sandbox Code Playgroud)

我想做的是这样的:

h = Test().make_upper()

我想实例化一个类对象并在一行代码中影响变量的状态,但我也希望能够将多个可以影响状态或对对象执行其他操作的函数链接在一起。这在 python 中是否可能像在 jQuery 中一样?

qua*_*ana 5

是的,当然。self只需从您感兴趣的实例方法返回即可:

class Test(object):
    def __init__(self):
        self.x = 'Hello'

    def make_upper(self):
        self.x = self.x.upper()
        return self
    def make_lower(self):
        self.x = self.x.lower()
        return self

h = Test().make_upper()
print(h.x)
Run Code Online (Sandbox Code Playgroud)

输出:

HELLO
Run Code Online (Sandbox Code Playgroud)