簡體   English   中英

Python 獲取和設置方法與@property 裝飾器

[英]Python get and set methods versus @property decorator

我正在探索Python中的裝飾器,作為一個從其他語言來到Python的人,我對@property及其@xxx.setter兄弟的目的有點困惑。 在 Java 和 C++ 中get_xxx()set_xxx()通常是組織封裝的方式。 在 Python 中,我們有這兩個裝飾器,它們需要特定的語法和名稱匹配才能工作。 @property如何比get-set方法更好?

我已經檢查了這篇文章,但除了+=運算符的可用性之外, @property的優點是什么?

property用於屬性的最佳部分是您不需要它

Python 中的理念是類屬性和方法都是公共的,但按照慣例 - 當您在它們的名稱前加上一個“_”

“屬性”的機制,即描述符協議,允許人們將以前的愚蠢的普通屬性更改為檢測屬性,如果系統發展到需要它的情況,則使用 getter 和 setter 的代碼進行保護。

但默認情況下,class 中的name屬性只是一個普通屬性。 你做person.name = "Name" - 不需要警衛,不需要也不推薦設置方法。 當它需要保護時(例如,將名稱大寫或過濾不正確的單詞),無論使用該屬性的代碼都不需要更改:使用屬性,屬性分配仍然通過“=”進行操作員。

除此之外,如果對您來說使用“=”看起來並不比person.set_name("Name")漂亮,我認為它對大多數人來說都是如此。 當然,這是主觀的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM