python物件導向之屬性

2022-06-16 22:45:11 字數 1584 閱讀 9474

property是一種特殊的屬性,訪問它時會執行一段功能(函式)然後返回值

class

person:

def__init__

(self,name,height,weight):

self.name =name

self.

__height =height

self.

__weight =weight

@property

#裝飾,將bim方法偽裝成乙個屬性

defbmi(self):

return

"%s的bmi指數是%s

" %(self.name,self.__weight / self.__height ** 2)

p = person("

alex

",1.8,70)

print(p.bmi) #

裝飾偽裝成乙個屬性 之後輸出列印不必寫 p.bmi()

為什麼要用property

將乙個類的函式定義成特性以後,物件再去使用的時候obj.name,根本無法擦覺自己

的name是執行了乙個函式然後計算出來的,這種特性的使用方式遵循l統一訪問的原則

由於新式類中具有三種訪問方式,我們可以根據他們幾個屬性的訪問特點,分別將三個方法定義為

同一屬性:獲取,修改,刪除

class

person:

def__init__

(self,name,age):

self.name =name

if type(age) is int: #

判斷年齡輸入是否是數字

self.__age =age

else

:

print("

輸入有誤")

@property

def age(self): #

獲取屬性

return self.__age

@age.setter

#修改屬性

defage(self,a1):

if type(a1) is

int:

self.

__age =a1

else

:

print("

輸入有誤")

@age.deleter

#刪除屬性

defage(self):

del self.__age

print(66)

p1 = person("

alex

",20)

#print(p1.age) #或取屬性,直接呼叫

#p1.age = 40 # 修改屬性

#print(p1.__dict__) # 內部被修改

#print(p1.age)

del p1.age #

刪除屬性

print(p1.__dict__) #

__age被刪除

Python物件導向之屬性

任務 定義乙個 dog 類,在類中定義屬性 name 和 age 在類外部可以修改該 name 和 age 的值,值通過 input 獲取。請在下面的begin end之間按照注釋中給出的提示編寫正確的 begin class dog 第一步 定義屬性 definit self,name,age s...

Python物件導向 屬性

1 建立用於計算的屬性 1.1 說明 1 在python中,可以通過 property 裝飾器 將乙個方法轉換為屬性,從而實現用於計算的屬性。2 把方法轉化為屬性後,可以直接通過方法名來訪問方法,而不需要再新增一對小括號 讓 更加簡潔。3 通過 property 裝飾器 轉換後的屬性不能重新賦值,否...

2 python物件導向之物件的屬性

定義乙個類 class testclass 類的初始化方法,當該類被例項化時自動呼叫該方法 def init self 無參初始化 我們在初始化方法中定義類的屬性 self.name 張三 self.age 18 self.男 定義乙個類的方法,來修改和列印類的屬性 def show self pr...