0
我想将一些java代码转换为python等价物,这样我可以在两者之间进行接口。所以在Java中我有一些像这样的代码:您可以在指定默认参数时使用self吗?
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):
...
除了...蟒蛇不允许函数重载,相反,它允许因为自己没有真正“存在
def to_array(self, order, length = self.length()):
...
但是......这也不能在Python允许,有可能:默认参数,所以,再次,它似乎是合乎逻辑,你会想要做这样的事情“直到w ithin函数的主体。
那么在Python中做这件事的正确方法是什么?或者它是不可能的?
编辑:我意识到,我使用的是应该返回一个值,所以现在他们返回int[]
谢谢,这看起来像我在找什么。看起来像python会有一个更干净的方式做这个,虽然考虑到它喜欢把自己提升为一种语言,可以很容易地编写干净的代码 – JDOdle
@JDOdle,但正如你所说*“自己并不真正”存在“,直到函数的主体“*,并且在定义时间设置默认参数值。当你还没有完成对班级的定义时,就不可能有一个实例! Python优先考虑*可读性*,其中的一部分是一致的概念模型。 – jonrsharpe
@JDOdle我觉得这是一个相当干净的方式。如果你想用5种不同的版本重载一个函数,它可能会变得更乏味,但这是编译语言给你的优势。每种编程语言模型都以牺牲一些(已知的)缺点为代价提供了一些优点。就像琼斯哈普说的,这与每种语言认为更重要的是什么有关。有关私有方法的类似讨论[这里](https://stackoverflow.com/a/7456865/2243104)。在一天结束时,按照语言鼓励你的方式处理你的代码,而不是在另一个方面有意义。 – Reti43