Python: Do something for any method of a class?

前端 未结 3 1195
自闭症患者
自闭症患者 2021-02-19 03:01

Say I have a class with a bunch of methods:

class Human():

  def eat():
    print(\"eating\")

  def sleep():
    print(\"sleeping\")

  def throne():
    print         


        
3条回答
  •  时光说笑
    2021-02-19 03:35

    You can do this if you don't mind adding an __init__ and __call__ method to your class and self to your method's arguments.

    class Human():
        def __init__(self):
            return None
        def __call__(self, act):
            print "I am:"
            method = getattr(self, act)
            if not method:
                raise Exception("Method %s not implemented" % method_name)
            method()
    
        def eat(self):
            print "eating"
    
        def sleep(self):
            print "sleeping"
    
        def throne(self):
            print "on the throne"
    
    John = Human()
    John("eat")
    John("sleep")
    John("throne")
    

    EDIT: see my other answer for a better solution

提交回复
热议问题