这个问题不是另一个重载问题的重复,因为我试图self.args
在函数中引用.在那个问题中给出的答案并不满足,因为如果我实现了这个答案,我将得到一个错误.但是,在其他语言中,这可以通过方法重载轻松完成......所以这个问题与另一个问题高度相关.
所以我有一个方法,
class learner(): def train(a ton of arguments): self.argA = argA, etc.
我想用一个值调用train,并让它使用所有的self调用来填充其他参数......但它是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)