这个问题不是另一个重载问题的重复,因为我试图在函数中引用 self.args。该问题中给出的答案并不令人满意,因为如果我执行该答案,我将得到一个错误。然而,在其他语言中,这很容易通过方法重载来完成...所以这个问题与另一个问题高度相关。
所以我有一个方法,
class learner():
def train(a ton of arguments):
self.argA = argA,
etc.
我只想用一个值调用 train,让它使用所有自调用来填充其他参数……但这是 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 hack,我这样做:
class learner():
def train(...):
....
def train_as_is(self,position):
self.train(position,self.alpha,self.beta, etc.)
但这是一个相当大的类,大量类似的函数正在把我的代码变成意大利面条......
请您参考如下方法:
对其他答案的改进是使用默认字典:
def train(self, position, **kwargs):
defaults = {
'a': self.a,
'b': self.b,
...etc...
}
defaults.update(kwargs)
... do something with defaults
def roll_forward(self,position):
self.alpha += 1
self.beta += 1
self.train(position)
