依次调用类/对象方法

时间:2019-03-28 15:34:47

标签: python

有没有一种方法可以按顺序调用类/对象方法,而不必每次都写“ class.method”或“ object.method”?

For example:
class ClassAWithALongName():
    @classmethod
    def do_stuff1()

    @classmethod
    def do_stuff2()
    @classmethod
    def do_stuff3()

Instead of:
ClassAWithALongName.do_stuff1()
ClassAWithALongName.do_stuff2()
ClassAWithALongName.do_stuff3()

Is there a way to do it like:
ClassAWithALongName{
                    do_stuff1(),
                    do_stuff2(),
                    do_stuff3()}

2 个答案:

答案 0 :(得分:0)

一种方法是使其设计流畅,并从每个classmethod返回类:

class ClassAWithALongName:
    @classmethod
    def do_stuff_1(cls):
        # Do stuffs
        return cls

    @classmethod
    def do_stuff_2(cls):
        # Do stuffs
        return cls

现在,您可以链接函数调用了:

ClassAWithALongName.do_stuff_1().do_stuff_2()   

此设计是否可以满足您的需要,并且您的工作在很大程度上取决于您的代码。

答案 1 :(得分:0)

您可以将功能对象存储在列表中,以便可以遍历列表以调用功能对象:

routine = [
    ClassAWithALongName.do_stuff1,
    ClassAWithALongName.do_stuff2,
    ClassAWithALongName.do_stuff3
]
for func in routine:
    func()