如何创建局部动态变量

时间:2012-11-20 10:57:27

标签: python dynamic python-3.x eval

这是我的代码,我想使用eval()获取规则状态,但eval()需要局部变量,有许多类继承基类,所以我需要重写{{1在每个班级。

我想避免这种情况,一个想法是在get_stat()中创建动态变量,例如。 class b在func get_stat()

中动态创建变量a和b

我应该如何在功能中创建动态变量?或任何其他方式来避免这种愚蠢的想法。我使用python 3.2.3,get_stat()不起作用

locals()

1 个答案:

答案 0 :(得分:2)

您可以将字典传递给包含变量的eval()函数,以评估表达式:

>>> eval("a + b", {"a": 2, "b": 3})
5

传递self.__dict__以访问对象的属性:

>>> class MyClass(object):
...     def __init__(self):
...             self.a = 2
...             self.b = 3
... 
>>> obj = MyClass()
>>> obj.__dict__
{'a': 2, 'b': 3}
>>> eval("a + b", obj.__dict__)
5

链接: