这个问题不是其他重载问题的重复,因为我试图在函数中引用self.args
。在这个问题中给出的答案不能满足,因为如果我实现了这个答案,我会得到一个错误。但是,在其他语言中,这很容易通过方法重载来完成......所以这个问题与另一个问题高度相关。在Python中重载方法:更重载
所以我有一个方法,
class learner():
def train(a ton of arguments):
self.argA = argA,
etc.
我想打电话给列车只有一个值,并将它使用所有自调用来填充其他参数...但它是一个圆形的引用python似乎不支持。理想情况下,我会写:
class learner():
def train(self, position, data = self.data, alpha = self.alpha, beta = etc):
...do a bunch of stuff
def roll_forward(self,position):
self.alpha += 1
self.beta += 1
self.train(position)
我该怎么做?在其他语言中,我可以定义访问的内部变量第二train
功能...
,我有一个janky黑客在那里我这样做:
class learner():
def train(...):
....
def train_as_is(self,position):
self.train(position,self.alpha,self.beta, etc.)
但是,这是一个相当大的类和一吨这样的功能是把我的代码放入面条...
可能重复的[如何在Python中使用方法重载?](http://stackoverflow.com/questions/10202938/how-do-i-use-method-overloading- in-python) –
不,不是重复的。我其实是回答了这个问题。不知道你明白我想要做什么。 – bordeo
参数默认值在模块加载时进行评估。所以即使你没有自引用的问题,代码也不会做你想要的,因为'self.alpha'的修改不会影响train()的默认值。 – NEOatNHNG