当前位置:  开发笔记 > 编程语言 > 正文

Python中的方法重载:更多重载

如何解决《Python中的方法重载:更多重载》经验,为你挑选了1个好方法。

这个问题不是另一个重载问题的重复,因为我试图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.)

但这是一个相当大的课程,而且很多这样的功能都将我的代码变成意大利面...



1> Daniel Rosem..:

其他答案的增强是使用默认字典:

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)

推荐阅读
Chloemw
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有