python之中特性(attribute)與屬性(property)有什麼區別?

時間 2021-05-08 04:17:22

1樓:粒粒羅

在Mark Lutz的書 Learning Python 4th Edition裡對attribute是這麼解釋的:

An attribute is simply a variable name that is attached to a specific object (like a module).

所以可以簡單的認為attribute就是script裡的變數名。

書裡他對property是這麼解釋的:

A mechanism known as properties provides another way for new-style classes to define automatically called method for access or assignment to instance attribute.

Properties are based on a new notion of attribute descriptors...

In short, a property is a type of object assigned to a class attribute name.以上~

2樓:filosfino

attribute 包括預設的 getter/setter/deleter,觸發內建的 get/set/delete 方法。

property 是特殊的 attribute,可以自定義 getter/setter/deleter 等屬性,自己控制 get/set/delete 時觸發的方法,也可以不定義來禁止該操作。

3樓:空間撒加

因為python無法完全實現封裝性,比如在乙個類的方法裡對self.W和self.H兩個變數進行賦值,在類的外邊可以直接改變這兩個變數。

這稱之為屬性。但這樣破壞了封裝性,所以要在類的方法裡寫self.W,self.

H=size,再通過property函式將size變成特性,在類外邊通過改變size呼叫方法,再通過呼叫的方法來改變W和H的值。但是如果用__dict__來檢視屬性的話是沒有size的,所以size是類外部為了實現封裝性的乙個中間變數(特性)。這是我的理解,希望各位指出不足,在下謝過

如何使用Python的膠水語言特性?

可以這麼理解,Python是語言的操作介面。C語言等為了各種原因 主要是效能 有諸多對程式設計師不太不友好的性質,比如嚴格型別,函式沒有字面量,這些性質在編寫如作業系統,資料庫時是有益甚至必須的。Python則能讓程式設計師更多的思考演算法本身,比如資料庫或檔案的底層操作一般是C或C 寫的,使用Py...

Python3 10的新特性match關鍵字為什麼不會和當前作用域的變數名稱match衝突?

Ivony 上下文關鍵字嘛,沒什麼特別的。C 從第乙個版本就支援上下文關鍵字,get和set。然後從第乙個版本就沒有再增加過任何乙個非上下文關鍵字,算是把上下文關鍵字用到極致了 那麼乙個語言可不可以沒有任何關鍵字,全部都是上下文關鍵字和可過載的運算子呢?理論上是可以的,但是實際上這種語言會非常難用 ...

python有什麼類似特性(或者是解釋型語言特性)?

除非你想走編譯原理等方向否則不建議去鑽牛角尖 想這個東西是怎麼實現的 Coldwings 已經從編譯原理的基礎 語法樹 方向做了乙個很專業的回答 從提問來看你很需要乙個基礎的邏輯 語言感,也就是說你需要先知道基本邏輯運算 條件控制 變數等東西,然後你才可以更進一步去知道 這個東西是怎麼實現的 否則一...