2017-03-06 81 views
0

我正在開發一個Python項目,並且由於可以通過指定class.variablename直接訪問實例變量名稱,所以我想知道是否建議爲相同的實現getter函數。我還沒有將變量聲明爲私有。在Python中避免實現getter函數是一種不好的做法嗎?

+1

如果你可以做一件事情比較簡單的事情,它增強了可讀性並降低了運行時複雜度,那麼你應該做那件事。調用getter比在'self .__ dict__'中查找花費更多,所以它不僅難以閱讀,而且也更慢*。 –

+2

這似乎是基於意見(離題),但我認爲實現一個getter作爲一個'屬性',所以你的屬性可以被訪問,但沒有被篡改是理想的。 –

+0

如果不公開,請使用一個或兩個下劃線啓動變量名稱。如果你想要一個特殊的getter/setter,把它創建爲private並創建一個getter/setter。 – akg

回答

10

在像Java這樣的語言中,您實現了getter和setter,因此如果您想在獲取或設置屬性時添加其他處理(如值驗證,訪問控制或日誌記錄),則無需更改類的接口。如果您的類將被您沒有編寫的應用程序使用,這一點尤其重要。

在Python中,您可以在不更改界面的情況下將代碼添加到屬性@property,因此您應該這樣做。使用常規屬性訪問來啓動,如果需要添加行爲,則稍後添加@property

即使這樣,保持你的getter和setter函數也很簡單。預計屬性訪問會相當快,您應該避免違反該期望。如果您需要做大量工作才能獲得價值,方法是適當的,但給它一個描述性名稱:calculateFoo()而不是getFoo(),例如。

相關問題