我想确定要动态查找哪个属性, 考虑下面的python代码:
def f(x, a):
return x.a
class X:
b = 4
x = X()
print(f(x, b))
如果python具有此属性,则上面的代码应打印4。
有没有办法用任何语言进行? 我无法想象使用C ++模板或动态类型的方法。
答案 0 :(得分:4)
我认为您不能以您尝试的方式动态访问对象的属性。内置函数getattr
将允许您执行此操作。正如marcin建议你可以用getattr
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