你可以在分配默认参数时使用self吗?

JDO*_*dle 0 python

我试图将一些Java代码转换为python等价物,以便我可以在两者之间进行接口.所以在Java中我有一些像这样的代码:

public int[] toArray(boolean order) {
    return toArray(order, this.length());
}
public int[] toArray(boolean order, int length) {
    ...
}
Run Code Online (Sandbox Code Playgroud)

并且python中的逻辑等效项可能如下所示:

def to_array(self, order):
  return self.to_array(order, self.length())
def to_array(self, order, length):
  ...
Run Code Online (Sandbox Code Playgroud)

除了... python不允许函数重载,相反它允许默认参数,所以,再次,你想要做这样的事情似乎合乎逻辑:

def to_array(self, order, length = self.length()):
  ...
Run Code Online (Sandbox Code Playgroud)

但是...这在python中也是不允许的,可能因为self直到函数体内才真正"存在".

那么在python中执行此操作的正确方法是什么?或者它是不可能的?

编辑:我意识到我在我的java代码中使用了void函数,它应该返回一个值,所以现在它们返回 int[]

Gui*_*ume 5

执行此操作的pythonic方法是使用None默认值,然后对其进行测试:

def to_array(self, order, length=None):
    if length is None:
        length = self.length()
Run Code Online (Sandbox Code Playgroud)