【发布时间】:2011-03-26 07:12:29
【问题描述】:
我正在尝试在类似于此的代码中摆脱exec:
class A(object):
for field in ['one', 'two', 'three']:
exec '%s = "%s value"' % (field, field)
...这样:
>>> A.one
'one value'
>>> A.two
'two value'
>>> A.three
'three value'
编辑:并且还满足主题中提到的要求,即A.one 是'one value',在A 被实例化之前(不要被误认为A() 实例化)。
有办法吗?
【问题讨论】:
-
你能解释一下标题与问题有什么关系吗?
-
这很恶心。你为什么要这样做?
-
@gnibbler 是的。我试图在类被实例化之前做到这一点。因此,在引用 A 时调用的元类已经适用于那些动态创建的字段。
-
@katrielalex 我认为它比使用 django.forms.BaseForm 和调用 type() 更具可读性......但这个问题本身似乎很有趣。我一开始以为我无法在
A的body 中执行for 循环,但是当我发现可以时,我想更进一步。