物件導向 proprety

2021-10-24 08:28:34 字數 1369 閱讀 3513

#為什麼要用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 對於物件導向與面向過程可以用乙個例子解釋,如乙個木匠要做乙個盒子,那麼這個盒子的出發點會有兩種方式 物件導向 先想好要做的盒子,之後在去找相應的工具去做。面向過程 不去想要做什麼樣的盒子,隨需取工具。物件導向三大特徵 封裝...