Python中通過property設(shè)置類屬性的訪問
Python類的所有屬性都是公共的,無法將其設(shè)置為私有,即任何實例對象都可以通過該屬性名對其進(jìn)行訪問。為了達(dá)到類似C++類的封裝性能,可以使用property來設(shè)置Python類屬性的訪問權(quán)限。
類的封裝性能,指的是只能通過指定的方法對類的屬性進(jìn)行訪問。因此,首先為類定義訪問屬性的方法。
1 定義訪問類屬性的方法
代碼如下所示
class A: ????def __init__(self, name): ????????self.name = name ????def get_name(self): ????????return self.name ????def set_name(self, name): ????????self.name = name
其中,類A有一個名為name的屬性,通過get_name()方法獲取該屬性,通過set_name()方法設(shè)置該屬性。
2 使用property()設(shè)置訪問類屬性的方法
在定義完獲取和設(shè)置屬性的方法之后,在類A的內(nèi)部使用property()設(shè)置訪問類屬性的方法,代碼如下所示。
name = property(get_name, set_name)
其中,property()的第一個參數(shù)表示獲取指定屬性時要調(diào)用的方法,第二個參數(shù)表示設(shè)置指定屬性時要調(diào)用的方法。
3 獲取和設(shè)置指定屬性
通過如下代碼獲取和設(shè)置指定屬性。
a1 = A('yang') print(a1.my_name) a1.my_name = 'li' print(a1.my_name)
第一個print()中打印的是a1.my_name,此時實際上調(diào)用的是property()的第一個參數(shù),即get_name()獲取類A的屬性name;之后通過a1.my_name設(shè)置類A的屬性name,此時調(diào)用的是類A的set_name()方法。
4 property()擴(kuò)展用法
在“2 使用property()設(shè)置訪問類屬性的方法”中提到了property()前兩個參數(shù)的含義。property()第三個參數(shù)表示在刪除(del)實例對象時,自動調(diào)用的方法,而第四個參數(shù)的類型是字符串,表示對類的描述,在顯示__doc__屬性時顯示。
在類A的內(nèi)部添加如下代碼:
def del_name(self): ????????print('del_name') my_name = property(get_name, set_name, del_name, '我是類A')
之后,在主程序中使用如下代碼
print(A.my_name.__doc__) del a1.my_name
此時,程序會打印“我是類A”和“del_name”信息。
到此這篇關(guān)于Python中通過property設(shè)置類屬性的訪問的文章就介紹到這了,更多相關(guān)Python property設(shè)置類屬性內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- 掌握Python property裝飾器巧妙管理類的屬性
- python裝飾器中@property屬性的使用解析
- 關(guān)于python中@property的使用方法
- Python?property裝飾器使用案例介紹
- Python深入分析@property裝飾器的應(yīng)用
- python 中的@property的用法詳解
- python中@Property屬性使用方法
- Python中property屬性的用處詳解
- Python裝飾器中@property使用詳解
- Python中關(guān)于property使用的小技巧
- Python的@property的使用
- 詳解Python裝飾器之@property
- Python property函數(shù)的具體使用
相關(guān)文章
Python使用scipy模塊實現(xiàn)一維卷積運算示例
這篇文章主要介紹了Python使用scipy模塊實現(xiàn)一維卷積運算,結(jié)合實例形式分析了scipy模塊的功能及使用scipy模塊進(jìn)行一維卷積運算的相關(guān)操作技巧,需要的朋友可以參考下2019-09-09Python探針完成調(diào)用庫的數(shù)據(jù)提取
這篇文章主要介紹了Python探針完成調(diào)用庫的數(shù)據(jù)提取,Python中可以通過sys.meta_path來實現(xiàn)import?hook的功能,下文詳細(xì)資料介紹,需要的小伙伴可以參考一下2022-05-05python 列出面板數(shù)據(jù)所有變量名的示例代碼
在Python中,處理面板數(shù)據(jù)(Panel Data)通常使用pandas庫,特別是當(dāng)數(shù)據(jù)以DataFrame或Panel,這篇文章主要介紹了python 列出面板數(shù)據(jù)所有變量名,需要的朋友可以參考下2024-06-0640行Python代碼實現(xiàn)天氣預(yù)報和每日雞湯推送功能
這篇文章主要介紹了通過40行Python代碼實現(xiàn)天氣預(yù)報和每日雞湯推送功能,代碼簡單易懂,非常不錯具有一定的參考借鑒價值 ,需要的朋友可以參考下2020-02-02如何在Flask中實現(xiàn)數(shù)據(jù)分組流程詳解
在Flask中,數(shù)據(jù)分組是指將一組數(shù)據(jù)按照某種方式進(jìn)行分類,以便更好地對數(shù)據(jù)進(jìn)行處理和展示,可以使用Python內(nèi)置的itertools模塊中的groupby方法,或者使用SQL語句中的GROUP?BY子句來實現(xiàn)數(shù)據(jù)分組,這篇文章介紹了在Flask中實現(xiàn)數(shù)據(jù)分組,感興趣的同學(xué)可以參考下文2023-05-05關(guān)于Python網(wǎng)絡(luò)爬蟲requests庫的介紹
這篇文章主要介紹了關(guān)于Python網(wǎng)絡(luò)爬蟲requests庫,而很多時候這些數(shù)據(jù)存儲在網(wǎng)頁中,手動下載需要花費的時間太長,這時候我們就需要網(wǎng)絡(luò)爬蟲幫助我們自動爬取這些數(shù)據(jù),需要的朋友可以參考下2023-04-04