假设我有一个名为method_one
的类,它有一个名为method_one
的方法。比如说,我正在将具有方法method
名称的dict转换为值AttributeError: 'A' object has no attribute 'method'
作为键,并因某种原因将其转换为JSON(Amazon SQS)。
现在当我将JSON字符串转换回dict(从Amazon SQS读取)时,在使用dict语法提取方法名称然后调用类对象上的方法返回错误。
import json
class A:
def method_one(self):
return "method_one"
j_json = json.dumps({
'method': A.method_one.__name__
})
j_dict = json.loads(j_json)
a = A()
method = j_dict['method']
a.method()
如何在类的对象上调用方法?
{{1}}
答案 0 :(得分:3)
method
变量具有要调用的实际方法的名称,而不是实际的方法本身。您需要使用method
变量获取与getattr
变量中的名称对应的方法,并像这样调用它
>>> import json
>>> class A:
... def method_one(self):
... return "method_one"
...
>>> j_json = json.dumps({
... 'method': A.method_one.__name__
... })
>>> j_dict = json.loads(j_json)
>>> a = A()
>>> method = j_dict['method']
>>> getattr(a, method)()
'method_one'