传递哪个成员动态查找

时间:2012-02-21 19:31:07

标签: c++ python dynamic language-agnostic macros

我想确定要动态查找哪个属性, 考虑下面的python代码:

def f(x, a):
    return x.a

class X:
    b = 4

x = X()
print(f(x, b))

如果python具有此属性,则上面的代码应打印4。

有没有办法用任何语言进行? 我无法想象使用C ++模板或动态类型的方法。

3 个答案:

答案 0 :(得分:4)

我认为您不能以您尝试的方式动态访问对象的属性。内置函数getattr将允许您执行此操作。正如marcin建议你可以用getattr

替换f

http://docs.python.org/library/functions.html#getattr

def f(x, a)
  return getattr(x, a)

class X:
    b = 4

getattr(x, a)

print(getattr(x, "b"))

答案 1 :(得分:1)

在Python中,使用dictionary

def f(x,a):
   return x[a]

x = {}
x[b] = 4
print f(x,b)

答案 2 :(得分:1)

f = getattr

这将使您的示例有效。我想你需要阅读python文档:http://docs.python.org/library/functions.html