我來自C/C++世界,我很難在python中做所有的OOP類比。我裹着我的腳本中的一類,現在在我log()
「私人」的實例方法得到這個錯誤:如何在python實例方法中創建靜態局部變量?
def __log(self, contents):
sys.stdout.write(contents)
# Append all writes after the first
if not hasattr(self.__log, "counter"):
self.__log.counter = 1
f = open(self.output_filepath, 'w')
else :
f = open(self.output_filepath, 'a')
f.write(contents)
f.close()
我強烈建議您不要使用「私人」名稱,如「__log」。它們很醜,並且實際上並沒有阻止訪問。 Python的工作方式與C++不同。爲了自己的利益使用它。 – 2014-10-05 18:21:59
雖然他們是一個非常強大的「停止」標誌。作爲主要Python庫的共同開發者,我可以告訴你使用下劃線向用戶發出接口/實現邊界的信號是多麼重要。 – 2014-10-05 18:45:10
很好,使用單個下劃線。雙下劃線只是說,「我習慣於Java或C++,並希望我的私人關鍵字回來!」 – 2014-10-05 23:30:48