這是我的代碼,我想用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