property是一種特殊的屬性,訪問它時會執行一段功能(函式)然後返回值
classperson:
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統一訪問的原則
由於新式類中具有三種訪問方式,我們可以根據他們幾個屬性的訪問特點,分別將三個方法定義為
同一屬性:獲取,修改,刪除
classperson:
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...