我正在尝试将一些java代码转换为python等价物,以便我可以在两者之间进行接口。所以在Java中我有一些这样的代码:
public int[] toArray(boolean order) {
return toArray(order, this.length());
}
public int[] toArray(boolean order, int length) {
...
}
和python中的逻辑等价物可能如下所示:
def to_array(self, order):
return self.to_array(order, self.length())
def to_array(self, order, length):
...
除了... python不允许函数重载,而是允许默认参数,所以,再次,你想要做这样的事情似乎是合乎逻辑的:
def to_array(self, order, length = self.length()):
...
然而......在python中也不允许这样做,因为在函数体内直到self才真正“存在”。
那么在python中执行此操作的正确方法是什么?或者这是不可能的?
编辑:我意识到我在我的java代码中使用了void函数,它应该返回一个值,所以现在它们返回int[]
答案 0 :(得分:5)
执行此操作的pythonic方法是使用None
作为默认值,然后对其进行测试:
def to_array(self, order, length=None):
if length is None:
length = self.length()