在alpha,beta修剪算法中, 我有一个类,其中定义了函数def getAction(self,gamestate)id。我在def getAction中再做了两个函数
像:
class BAC:
def you(self,gamestate):
def me(gamestate,depth,alpha, beta):
------
return v
def both(gamestate,depth,alpha, beta):
-------------------
return v
return me(gamestate,0,alpha, beta)-
我需要将alpha,beta放在我和两个函数中。但是我在哪里定义alpha和beta值。如果我在def me和def中定义alpha和beta,那么就会出现错误,因为全局名称alpha不存在。
如何制作alpha和beta本地变量或如何才能使其正常工作?
答案 0 :(得分:1)
我猜你想要将alpha和beta定义为你的类的属性。
您可能需要一个初始化变量的类构造函数。
class BAC:
def __init__(self):
self.alpha= 'Hello '
self.beta= 'World!'
def me(self):
print self.alpha + self.beta
或者您可以初始化属性变量,如:
class BAC:
def me(self,alpha,beta):
self.alpha = alpha
self.beta= beta
print self.alpha + self.beta
如果你想要持久化,你只需要引用类的属性。
如果您选择第一个解决方案:
my_bac = Bac()
print my_bac.alpha + my_bac.beta
输出
Hello World!
Hello World!
答案 1 :(得分:1)
alpha-beta算法通常作为更高级别的函数实现,它将初始值分配给alpha和beta,然后将这些值传递给递归(或者非递归的基于堆栈的)搜索函数。
上面给出的类解决方案也很好,虽然我可能会添加一个方法来重置alpha和beta,这样就不必在每次搜索开始时实例化类实例。