#為什麼要用property?
將乙個類的函式定義成特性以後,物件再去使用的時候obj.name,根本無法察覺自己的name是執行了乙個函式然後計算出來的,這種特性的使用方式遵循了統一訪問的原則
class
people
:def
__init__
(self,name,weight,height)
: self.name=name
self.weight=weight
self.height=height
@property
#加上裝飾proprety 會使使用者再使用bmi功能的時候不需要加括號,就像呼叫資料屬性一樣
defbmi
(self)
:return self.weight #/ (self.height**2)
p1=people(
'egon',75
,1.85
)print
(p1.bmi)
# 如過不加proprety 那麼呼叫 bmi 需要再加個括號。此時的表面看上去呼叫的是資料屬性,實際是呼叫功能屬性
class
foo:
def__init__
(self,val)
: self.__name=val #將所有的資料屬性都隱藏起來
@property
defname
(self)
:return self.__name #obj.name訪問的是self.__name(這也是真實值的存放位置)
@name.setter
defname
(self,value):if
notisinstance
(value,
str)
:#在設定值之前進行型別檢查
raise typeerror(
'%s must be str'
%value)
self.__name=value #通過型別檢查後,將值value存放到真實的位置self.__name
@name.deleter
defname
(self)
:raise typeerror(
'can not delete'
)f=foo(
'egon'
)print
(f.name)
f.name=
10#丟擲異常'typeerror: 10 must be str'
del f.name #丟擲異常'typeerror: can not delete'
物件導向 初識物件導向
面向過程思想 步驟清晰簡單,第一步做什麼,第二步做什麼.面向過程適合處理一些較為簡單的問題 物件導向思想 物以類聚,分類的思維模式,思考問題首先會解決問題需要分哪些類,然後對這些類進行單獨思考,最後才是對某個分類下的細節進行面向過程的思索 物件導向適合處理複雜的問題,適合處理需要多人協作的問題 對於...
物件導向程式設計01 面向過程 物件導向
前面12講我已經寫完了從零開始學j ase 慶祝完結撒花!那麼從今天開始正式步入物件導向程式設計。建議開啟本章之前先回顧 j ase010方法詳解和 j a變數與方法的呼叫 同類操作中與跨類操作中的對比 物件導向程式設計 oop object oriented programming 物件導向程式設...
物件導向過程與物件導向
物件導向過程與物件導向 1 程式的發展經歷了兩個階段 面向過程 物件導向。2 對於物件導向與面向過程可以用乙個例子解釋,如乙個木匠要做乙個盒子,那麼這個盒子的出發點會有兩種方式 物件導向 先想好要做的盒子,之後在去找相應的工具去做。面向過程 不去想要做什麼樣的盒子,隨需取工具。物件導向三大特徵 封裝...