Python 从类内的字符串调用方法?
我正在尝试使用字符串值调用functions。这是我的问题的一个简单例子。如何正确调用Python 从类内的字符串调用方法?,python,string,methods,getattr,Python,String,Methods,Getattr,我正在尝试使用字符串值调用functions。这是我的问题的一个简单例子。如何正确调用方法(行)?我尝试了不同的解决方案,只通过@staticmethod获得了成功,但这不是我想要的 class A(): def prime(self, key): line = 'Good' method = getattr(A, key) method(line) def add1(self, string): print s
方法(行)
?我尝试了不同的解决方案,只通过@staticmethod
获得了成功,但这不是我想要的
class A():
def prime(self, key):
line = 'Good'
method = getattr(A, key)
method(line)
def add1(self, string):
print string + ' day!'
def add2(self, string):
print string + ' evening!'
def main():
test = A()
test.prime('add1')
test.prime('add2')
if __name__ == "__main__":
main()
您需要将
self
传递到getattr
,而不是传递类名:
method = getattr(self, key)
method(line)
此外,如果这是Python 2,在大多数情况下,您应该从
对象继承,以使用:
您需要将self
传递到getattr
,而不是传递类名:
method = getattr(self, key)
method(line)
此外,如果这是Python 2,在大多数情况下,您应该从对象继承,以使用:
使用:
使用:
为什么你希望它是一个字符串,而你可以正常调用它,因为这是我的问题的一个简单的例子。你需要传递一个字符串而不是方法本身的引用吗?test.prime(A.add1),然后def prime(self,method):method(self,“Good”)`是的,因为用户可以访问参数,并且更容易将输入作为简单字符串。我希望,现在更清楚了,当你可以正常调用它时,为什么你希望它是一个字符串,因为这是我问题的一个简单例子。你需要传递一个字符串而不是对方法本身的引用吗?test.prime(A.add1),然后def prime(self,method):method(self,“Good”)`是的,因为用户可以访问参数,并且更容易将输入作为简单字符串。我希望,现在更多了clear@Gatto不客气:-)。如果这个答案解决了你的问题,考虑接受它。“加托不客气:-”。如果这个答案解决了你的问题,考虑接受它。
def prime(self, key):
operator.methodcaller(key, "Good")(self)