为了账号安全,请及时绑定邮箱和手机立即绑定

在类中调用函数的函数

在类中调用函数的函数

料青山看我应如是 2021-07-25 00:20:10
我有一个问题,我想要一个函数来调用或执行类中的所有函数。class example:    def foo(self):        print("hi")    def bar(self):        print("hello")    def all(self):        self.foo()        self.bar()有没有更好的方法来做到这一点?因为我的班级有大约 20 个函数,而我只想用一个函数来调用所有这些函数。谢谢
查看完整描述

3 回答

?
慕桂英3389331

TA贡献2036条经验 获得超8个赞

虽然都是丑陋的,但检查是首选方法。你可以通过inspect调用一个对象的所有方法


import inspect


class 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


查看完整回答
反对 回复 2021-08-03
?
互换的青春

TA贡献1797条经验 获得超6个赞

虽然我不确定这是否是最好的方法,但我建议如下


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


查看完整回答
反对 回复 2021-08-03
  • 3 回答
  • 0 关注
  • 166 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信