이것은 내 코드입니다. 규칙 상태를 얻으려면 eval()
을 사용하고 싶지만 eval()
에는 로컬 변수가 필요합니다. 기본 클래스를 상속하는 많은 클래스가 있으므로 모든 클래스에서 get_stat()
을 다시 작성해야합니다.로컬 동적 변수를 만드는 방법
저는 이것을 피하기 위해 동적 변수를 만드는 것이 좋습니다. 예 : get_stat()
. 클래스 b는 func에서 변수 a와 b를 동적으로 생성합니다. get_stat()
함수에서 동적 varables를 어떻게 작성해야합니까? 또는이 어리석은 생각을 피하는 다른 방법. 에 대한 액세스 권한을 부여
>>> eval("a + b", {"a": 2, "b": 3})
5
패스 self.__dict__
: 나는 당신에 대한 표현을 평가하기 위해 변수를 포함하는 eval()
함수에 사전을 전달할 수 있습니다
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)
내가 여기에 동적 무엇을 볼 수 없습니다! 모든 클래스에 대해'rule'을 쓰는 중이라면, 함수를 다시 쓸 수도 있습니다. – vikki
@vikki : 각 서브 클래스의'rule' 속성이 on-the -fly와'get_stat()'는 현재 값을 기반으로 결과를 반환합니다. 규칙을 변경하는 데 필요한 구문이 이렇게 편리하지 않거나 깨끗하지 않을 수도 있지만 '규칙'도 방법으로 만 만들 수 있다는 사실에 맞습니다. – martineau