1

我已经坚持了很长时间(就像字面意思是几周),我已经完成了代码中的所有其他内容,但这个。我也进行了很多研究,但无法接近解决方案。我等了一周才来这里的唯一原因是因为我想自己解决这个问题,但现在,我放弃了!

现在,假设我有以下代码:

class test:
  def meth1(self, obj):
    self.hello = {}
    return self.hello.obj()
  def meth2(self):
      test.meth1(self, 'keys')

现在,当我创建一个实例并尝试调用这样的方法时meth2

x = test()
x.meth2()

由于明显的原因,它给了我一个错误。我怎样才能让它做我想做的事——将参数传递给函数并将该参数用作另一个对象的对象?

4

1 回答 1

2

看起来你想要getattr()

def meth1(self, obj):
    self.hello = {}
    return getattr(self.hello, obj)()

getattr(a, b)相当于a.bb在第二种情况下是第一种情况下的字符串b)。在这种情况下,aself.hellobobj。从您的代码段来看,您似乎想要调用obj属性而不是直接返回它,这就是为什么我们()在末尾有 a 的原因。


>>> 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()
[]
于 2013-10-27T19:03:56.467 回答