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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > python >内容正文

python

python学习笔记 day25 封装

發(fā)布時(shí)間:2025/6/17 python 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python学习笔记 day25 封装 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

1. 封裝

廣義面向?qū)ο蟮姆庋b是為了代碼的保護(hù),只讓自己的對(duì)象調(diào)用自己的方法;

狹義的封裝是把屬性,方法隱藏起來,只供內(nèi)部調(diào)用,不讓外部調(diào)用;

?

1. 私有屬性--- 在類內(nèi)部使用__私有屬性名 來定義一個(gè)私有屬性

class Person():def __init__(self,name,password):self.name=name # 定義普通屬性self.__password=password # 定義私有屬性 person=Person('xuanxuan',123) print(person.name) try:print(person.password) # 直接在外部調(diào)用私有屬性是不可以的! except Exception as error:print("password是私有屬性,外部不可以直接調(diào)用",error)

運(yùn)行結(jié)果:

?

那到底可不可以有一種方式調(diào)用在類內(nèi)部定義的私有屬性呢~其實(shí)私有屬性在類內(nèi)部定義時(shí)會(huì)自動(dòng)在前面加上_類名,也就是在外部必須使用_類名__私有屬性名才可以調(diào)用私有屬性;

class Person():def __init__(self,name,password):self.name=name # 定義普通屬性self.__password=password # 定義私有屬性 person=Person('xuanxuan',123) print(person.name) print(person.__dict__) # 可以查看此時(shí)person對(duì)象的變量,包括私有屬性__password到底被偽裝成了什么形式(_類名__私有變量名) print(person._Person__password) # 在類內(nèi)部定義的私有屬性會(huì)被自動(dòng)轉(zhuǎn)成_類名__私有屬性名,所以在類外面調(diào)用時(shí),需要注意調(diào)用方式

?

運(yùn)行結(jié)果:

?

?在類內(nèi)部定義的私有屬性會(huì)在前面自動(dòng)加上_類名~,但是原則上不建議在類外部使用這種方式(_類名__私有變量名)去調(diào)用類內(nèi)定義的私有屬性私有屬性只有在類內(nèi)定義才有效

?

?2. 私有方法:

class Person():def __init__(self,name,password):self.name=nameself.__password=password # 定義私有屬性def __getpassword(self): # 定義私有方法return self.__passwordperson=Person('xuanxuan',123) print(person._Person__password) # 在外部可以通過_類名__私有屬性名來查看私有屬性(但是不建議這么做) print(person._Person__getpassword()) # 在內(nèi)部定義的私有方法其實(shí)也被自動(dòng)轉(zhuǎn)成_類名__私有方法名,所以可以通過這種方式調(diào)用類內(nèi)的私有方法(不建議這么做) print(Person.__dict__) # 可以查看Person類中的所有變量(普通屬性,私有屬性,私有方法,普通方法)

運(yùn)行結(jié)果:

發(fā)現(xiàn)其實(shí)類內(nèi)定義的私有方法,也會(huì)被自動(dòng)在前面加上_類名,所以在外部可以使用_類名__私有方法名來調(diào)用類內(nèi)的私有方法(也不建議)

?

3. 靜態(tài)私有屬性

class Person():__key='對(duì)密碼的編碼方式' # 靜態(tài)私有屬性,比如說要對(duì)用戶的密碼以某種方式編碼(但又不希望外部看見,雖然外部也可以使用某種方式看見)def __init__(self,name,password):self.name=nameself.__password=password # 定義私有屬性 外部可以使用_類名__私有屬性名進(jìn)行調(diào)用,當(dāng)然對(duì)屬性的調(diào)用前面肯定要加實(shí)例化的對(duì)象名 對(duì)象名._類名__私有屬性名def __getpassword(self): # 定義私有方法return self.__password # 可以在私有方法中調(diào)用私有屬性def func(self):self.__getpassword() # 注意雖然私有屬性或者私有方法都是在前面加上__雙下劃線,但是它們又會(huì)在類內(nèi)被自動(dòng)加上_類名;# 但是別忘了調(diào)用方法或?qū)傩远际菍?duì)象在調(diào)用,前面必須要加上對(duì)象名啊~ person=Person('璇璇',123) print('調(diào)用類內(nèi)的靜態(tài)私有屬性:',person._Person__key) # 在類外部查看類內(nèi)定義的靜態(tài)私有屬性 print('調(diào)用類內(nèi)定義的私有屬性:',person._Person__password) # 在類外部調(diào)用類內(nèi)定義的私有屬性 print('調(diào)用類內(nèi)定義的私有方法:',person._Person__getpassword()) # 在類外部查看類內(nèi)定義的私有方法

運(yùn)行結(jié)果:

?

轉(zhuǎn)載于:https://www.cnblogs.com/xuanxuanlove/p/9682653.html

總結(jié)

以上是生活随笔為你收集整理的python学习笔记 day25 封装的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。