python eval以runtim处的特定类变量为目标

2024-05-13 06:49:18 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图在运行时将变量绑定到类中的特定列表。下面的代码段可以工作,但我希望在eval表达式中使用类名,而不是变量。i、 e.等同于:

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

Tags: in列表forbinfoo表达式代码段eval
2条回答

也许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]

不要使用eval。对于动态属性访问,python知道getattr

mybin = 'bin2'
for bin in getattr(foo, mybin):
    print bin

相关问题 更多 >