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