這個問題不是其他重載問題的重複,因爲我試圖在函數中引用self.args
。在這個問題中給出的答案不能滿足,因爲如果我實現了這個答案,我會得到一個錯誤。但是,在其他語言中,這很容易通過方法重載來完成......所以這個問題與另一個問題高度相關。在Python中重載方法:更重載
所以我有一個方法,
class learner():
def train(a ton of arguments):
self.argA = argA,
etc.
我想打電話給列車只有一個值,並將它使用所有自調用來填充其他參數...但它是一個圓形的引用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黑客在那裏我這樣做:
class learner():
def train(...):
....
def train_as_is(self,position):
self.train(position,self.alpha,self.beta, etc.)
但是,這是一個相當大的類和一噸這樣的功能是把我的代碼放入麪條...
可能重複的[如何在Python中使用方法重載?](http://stackoverflow.com/questions/10202938/how-do-i-use-method-overloading- in-python) –
不,不是重複的。我其實是回答了這個問題。不知道你明白我想要做什麼。 – bordeo
參數默認值在模塊加載時進行評估。所以即使你沒有自引用的問題,代碼也不會做你想要的,因爲'self.alpha'的修改不會影響train()的默認值。 – NEOatNHNG