我已经坚持了很长时间(就像几周一样),我已经完成了代码中的所有其他内容但是这个。我也经常研究,但无法在解决方案附近找到任何地方。我等待一周来这里的唯一原因是因为我想自己解决这个问题,但现在,我放弃了!
现在,假设我有以下代码:
class test:
def meth1(self, obj):
self.hello = {}
return self.hello.obj()
def meth2(self):
test.meth1(self, 'keys')
现在,当我创建一个实例并尝试像这样调用方法meth2
时:
x = test()
x.meth2()
由于显而易见的原因,它给了我一个错误。我怎样才能让它做我想做的事情 - 将一个参数传递给一个函数并将该参数用作另一个对象的对象?
答案 0 :(得分:2)
看起来你想要getattr()
:
def meth1(self, obj):
self.hello = {}
return getattr(self.hello, obj)()
getattr(a, b)
相当于a.b
(其中b
在第二种情况下是第一种情况的b
成立的字符串。在这种情况下,a
为self.hello
,b
为obj
。在您的代码段中,您似乎想要调用 obj
属性而不是直接返回它,这就是我们最后有()
的原因。
>>> class test:
... def meth1(self, obj):
... self.hello = {}
... return getattr(self.hello, obj)()
... def meth2(self):
... return test.meth1(self, 'keys')
...
>>> x = test()
>>> x.meth2()
[]