2015-09-27 27 views
2

以下是paragraph in PEP8。我不明白「在這種情況下,使用屬性隱藏簡單數據屬性訪問語法後面的功能實現。」和附註3:爲繼承設計時,爲什麼「使用屬性隱藏功能實現」?

對於簡單的公共數據屬性,最好僅公開屬性名稱,而不需要複雜的訪問器/增量方法。請記住,如果您發現簡單的數據屬性需要增加功能行爲,那麼Python爲未來的增強提供了一條簡單的途徑。在這種情況下,使用屬性隱藏簡單數據屬性訪問語法後面的功能實現。

注1:屬性僅適用於新式類。注2:嘗試保持功能行爲的副作用免費,儘管緩存等副作用一般都很好。

注3:避免使用屬性進行計算量大的操作;該屬性符號使得調用者相信訪問是(相對)便宜的。

+1

你知道屬性是什麼嗎?如果不是,請先閱讀[文檔](https://docs.python.org/2/library/functions.html#property)並瞭解更多信息。 – BrenBarn

+0

它似乎是一個矛盾;如果屬性增長的功能行爲,誰知道它是否會變得昂貴?但是隱藏複雜性會向用戶傳遞廉價信息,無論發生在封面上。 –

+0

請縮小你不瞭解/需要知道的內容。否則,這個問題可能會以主要基於意見爲基礎被關閉。 –

回答

0

隱藏實現的目標是保持API常量。

如果您設計了一個具有簡單屬性的類,並且稍後您發現子類需要計算才能返回正確的值,則只需使用計算屬性替換簡單屬性,並且相關的API保持不變。計算屬性更好地稱爲屬性。

注意3是在設計一個類時記住的建議,而不是在對其進行子類化時。

相關問題