我试图在运行时将变量绑定到类中的特定列表。下面的代码段有效,但我想在eval表达式中使用类名而不是变量。即相当于:
mybin = 'bin2'
eval(foo.mybin)
这显然不会起作用...但是在尝试粘合" foo'之后我似乎无法弄清楚各种语法之后的语法。和" mybin'在一起。
class A:
bin1 = [3,6,9]
bin2 = [12,14,25]
foo = A()
mybin = 'foo.bin2'
for bin in eval(mybin):
print bin
输出:
12
14
25
答案 0 :(得分:1)
不要使用eval
。对于动态属性访问,python知道getattr
:
mybin = 'bin2'
for bin in getattr(foo, mybin):
print bin
答案 1 :(得分:0)
也许f-string
是你可能喜欢的:
class A():
bin1 = [1, 2]
bin2 = [12, 14, 25]
foo = A()
my_bin = 'bin2'
print(eval(f'foo.{my_bin}'))
#[12, 14, 25]