日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

Python----面向对象---property的使用

發布時間:2025/7/14 python 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Python----面向对象---property的使用 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一個求BMI體質指數的例子,代碼如下:

體質指數(BMI)= 體重? / 身高 **2

1 class People: 2 def __init__(self, name, weight, height): 3 self.name = name 4 self.weight = weight 5 self.height = height 6 7 p = People('alex', 75, 1.81) 8 9 p.bmi = p.weight / (p.height ** 2) 10 print(p.bmi) 11 12 結果為: 13 14 22.89307408198773

但是,這樣不夠靈活,我們對代碼做下更改:

如下:

1 class People: 2 def __init__(self, name, weight, height): 3 self.name = name 4 self.weight = weight 5 self.height = height 6 7 def bmi(self): 8 return self.weight / (self.height ** 2) 9 10 p = People('alex', 75, 1.81) 11 12 # p.bmi = p.weight / (p.height ** 2) 13 print(p.bmi()) 14 15 結果為: 16 17 22.89307408198773

上述代碼一定程度上提高了靈活性,但是用戶的調用的時候是在調用一個方法區執行,能不能讓用戶感覺就向在調一個數據屬性呢,答案是可以的,這就用到了property裝飾器

如下:

1 class People: 2 def __init__(self, name, weight, height): 3 self.name = name 4 self.weight = weight 5 self.height = height 6 7 @property 8 def bmi(self): 9 return self.weight / (self.height ** 2) 10 11 p = People('alex', 75, 1.81) 12 13 # p.bmi = p.weight / (p.height ** 2) 14 # print(p.bmi()) 15 print(p.bmi) 16 17 結果為: 18 19 22.89307408198773

但是不能給p.bmi賦值,因為它說到底還是一個方法,

二、給一個方法賦值,

l例如:

1 class People: 2 def __init__(self, name): 3 self.__name = name 4 5 @property 6 def name(self): 7 return self.__name 8 9 @name.setter 10 def name(self, val): 11 if not isinstance(val, str): 12 print('名字必須是字符串類型') 13 return 14 self.__name = val 15 16 p = People('egon') 17 p.name = 'EGON' 18 print(p.name) 19 20 結果為: 21 22 EGON

這用到了name.setter 裝飾器,這是在property裝飾器的基礎之上實現的

當然也可以刪除

例如

1 class People: 2 def __init__(self, name): 3 self.__name = name 4 5 @property 6 def name(self): 7 return self.__name 8 9 @name.setter 10 def name(self, val): 11 if not isinstance(val, str): 12 print('名字必須是字符串類型') 13 return 14 self.__name = val 15 16 @name.deleter 17 def name(self): 18 print('deleter') 19 20 print('不允許刪除') 21 22 p = People('egon') 23 # p.name = 'EGON' 24 # print(p.name) 25 26 del p.name 27 28 結果為: 29 30 deleter 31 不允許刪除

?

轉載于:https://www.cnblogs.com/xudachen/p/8619891.html

總結

以上是生活随笔為你收集整理的Python----面向对象---property的使用的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。