在序列中调用类/对象方法

2024-09-22 20:38:14 发布

您现在位置: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()}

Tags: 对象方法forobjectexampledefdomethod
2条回答

一种方法是使其成为流体设计,并从每个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()   

这种设计是否能满足您的需要,并继续下去?您的工作高度依赖于您的代码

您可以将函数对象存储在列表中,以便可以在列表中迭代调用函数对象:

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

相关问题 更多 >