在类中调用函数的函数

我有一个问题,我想要一个函数来调用或执行类中的所有函数。


class example:

    def foo(self):

        print("hi")

    def bar(self):

        print("hello")

    def all(self):

        self.foo()

        self.bar()

有没有更好的方法来做到这一点?因为我的班级有大约 20 个函数,而我只想用一个函数来调用所有这些函数。谢谢


料青山看我应如是
浏览 169回答 3
3回答

慕桂英3389331

虽然都是丑陋的,但检查是首选方法。你可以通过inspect调用一个对象的所有方法import inspectclass A:    def h(self):        print ('hellow')    def all(self):        for name, f in inspect.getmembers(self, predicate=inspect.ismethod):            if name != 'all' and not name.startswith('_'):               f()a = A()a.all()如果更喜欢 dir,您可以尝试 - catch getattr(self, attr)()for attr in dir(self):   try:       getattr(self, attr)()   except Exception:      pass

互换的青春

虽然我不确定这是否是最好的方法,但我建议如下class AClass():    def my_method_1(self):        print('inside method 1')    def my_method_2(self):        print('inside method 2')def run_my_methods():    executor = AClass()    all_methods = dir(executor)    #separate out the special functions like '__call__', ...    my_methods = [method for method in all_methods if not '__' in method]      for method in my_methods:        eval('executor.%s()'%method)run_my_methods()输出是inside method 1 inside method 2
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python