如果我有一个Python类,并且想根据变量调用它的函数,我该怎么办?我想象以下可以做到:
class CallMe: # Class
def App(): # Method one
...
def Foo(): # Method two
...
variable = "App" # Method to call
CallMe.variable() # Calling App()
但它不可能。还有其他办法吗?
答案 0 :(得分:71)
答案 1 :(得分: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()
答案 2 :(得分:2)
您可以使用getattr,也可以为变量分配绑定或未绑定方法。绑定方法绑定到类的特定实例,未绑定方法绑定到类,因此您必须将实例作为第一个参数传递。
e.g。
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"
答案 3 :(得分:1)
您的课程已被宣布为“旧式课程”。我建议你把所有课程都变成“新式课程”。
新旧类之间的区别在于新式类可以使用继承,您可能不需要立即继承。但这是一个很好的习惯。
以下是创建新样式类所需要做的全部内容:使用Python语法表示它继承自“object”。您可以通过在类名后面添加括号并将名称 object 放在括号中来实现。像这样:
class CallMe(object): # Class
def App(): # Method one
...
def Foo(): # Method two
...
正如我所说,你可能不需要立即使用继承,但这是一个很好的习惯。这里有几个关于StackOverflow的问题,“我正在尝试做 X 并且它不起作用”,结果发现这个人编写了一个旧式的类。