从字符串调用方法

2024-04-18 03:02:59 发布

您现在位置:Python中文网/ 问答频道 /正文

如果我有一个Python类,并且想根据变量从中调用一个函数,我该怎么做?我想象着下面可以做到:

class CallMe: # Class

   def App(): # Method one

      ...

   def Foo(): # Method two

      ...

variable = "App" # Method to call

CallMe.variable() # Calling App()

但不行。还有别的办法吗?


Tags: to函数appfoodefcallvariableone
3条回答

你的代码看起来不像python,你想这样做吗?

class CallMe:

    def App(self): #// Method one
        print "hello"

    def Foo(self): #// Method two
        return None

    variable = App #// Method to call

CallMe().variable() #// Calling App()

你可以这样做:

getattr(CallMe, variable)()

getattr是一个内置方法,它返回对象的命名属性的值。本例中的值是一个方法对象,您可以用()调用它

可以使用getattr,也可以将绑定或未绑定方法分配给变量。绑定方法绑定到类的特定实例,而未绑定方法绑定到类,因此必须将实例作为第一个参数传入。

例如

class CallMe:
    def App(self):
        print "this is App"

    def Foo(self):
        print "I'm Foo"

obj = CallMe()

# bound method:
var = obj.App
var()         # prints "this is App"

# unbound method:
var = CallMe.Foo
var(obj)      # prints "I'm Foo"

相关问题 更多 >