这是我的代码,我想用eval()
来获得规则状态,但eval()
需要局部变量,有很多继承基类的类,所以我需要在每个类中重写get_stat()
。如何创建本地动态变量
我想避免这种情况,一个想法是在get_stat()
中创建动态变量,例如。 b类动态创建func中的变量a和b get_stat()
我应该如何在函数中创建动态可变参数?或以任何其他方式来避免这个愚蠢的想法。我使用Python 3.2.3,locals()
不起作用
class base(object):
def check(self):
stat = get_stat()
def get_stat(self):
pass
class b(base):
rule = 'a > 5 and b < 3'
a = 0
b = 0
def update_data(self, a, b):
self.a = a
self.b = b
def get_stat(self):
a = self.a
b = self.b
return eval(rule)
class b(base):
rule = 'd > 5 and e < 3'
d = 0
e = 0
def update_data(self, d, e):
self.d = d
self.e = e
def get_stat(self):
d = self.d
e = self.e
return eval(rule)
我看不出有什么动力在这里!您仍然在为每个班级重新编写规则,您可能只需重写函数 – vikki
@vikki:我认为它是动态的,因为每个子类的'rule'属性可以在-fly和'get_stat()'将返回基于当前值的结果。你说'规则'也可以作为一种方法,尽管改变它的语法可能不像这样方便或简洁。 – martineau