国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

Python面向對象編程基礎解析(二)

2020-02-16 10:30:01
字體:
來源:轉載
供稿:網友

Python最近挺火呀,比鹿晗薛之謙還要火,當然是在程序員之間。下面我們看看有關Python的相關內容。

上一篇文章我們已經介紹了部分Python面向對象編程基礎的知識,大家可以參閱:Python面向對象編程基礎解析(一),接下來,我們看看另一篇。

封裝

1.為什么要封裝?

封裝就是要把數據屬性和方法的具體實現細節隱藏起來,只提供一個接口。封裝可以不用關心對象是如何構建的,其實在面向對象中,封裝其實是最考驗水平的

2.封裝包括數據的封裝和函數的封裝,數據的封裝是為了保護隱私,函數的封裝是為了隔離復雜度

3.數據的封裝就是在屬性前面加一個__

class People: def __init__(self,name,age,salary):  self.name=name  self.age=age  self.__salary=salaryp=People('zhang',19,100000)print(p.name)#zhangprint(p.age)#19print(p.__salary)#AttributeError: 'People' object has no attribute '__salary'

咦,報錯了,讓我們打開對象的名稱空間,看看發生了什么

print(p.__dict__)#{'name': 'zhang', 'age': 19, '_People__salary': 100000}

哦,原來python把__salary變形成了_People__salary,再來一遍

print(p._People__salary)#100000

所以,Python中并沒有絕對的隱藏,只要你知道了上面這個,就無所謂隱藏了
這些變形操作,只在類的定義階段或者對象定義(實例化階段)階段發生

雖然在外部無法直接訪問加了__的屬性,但是在類內部可以訪問到,可以這么理解,在定義階段,只要遇到__開頭的,Python解釋器自動識別為_類名__屬性,所以在類內部是可以訪問到的,這樣的話,我們就可以搞一點小事情了

先來看這個

class A: def foo(self):  print('from A foo')  self.bar() def bar(self):  print('from A bar')class B(A): def bar(self):  print('from B bar')b=B()b.foo()  #from A foo      #from B bar 別想多了,調用函數時別看定義位置,要看調用位置

如果就是想調用父類的bar()函數呢?該怎么做

class A: def foo(self):  print('from A foo')  self.__bar() def __bar(self):  print('from A bar')class B(A): def __bar(self):  print('from B bar')b=B()b.foo() #from A foo  #from A bar  有沒有感受到編程的美妙

4.封裝的應用

1)不讓外界看到我們的數據屬性是怎么定義的,只能通過我們提供的接口,看到我們允許外界看到的內容

class People: def __init__(self,name,age,height,weight,hobby):  self.__name=name  self.__age=age  self.__height=height  self.__weight=weight  self._hobby=hobby def tell_info(self):  print('''  name:%s  age:%s  height:%s  weeight:%s  '''%(self.__name,self.__age,    self.__height,self.__weight))p=People('zhang',18,1.90,75,'read')p.tell_info()            
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 自治县| 黑水县| 巩留县| 定安县| 金平| 游戏| 广德县| 双鸭山市| 碌曲县| 左权县| 淮安市| 大庆市| 嫩江县| 庆阳市| 长武县| 健康| 阳朔县| 万年县| 云浮市| 德令哈市| 漳平市| 江城| 元谋县| 安庆市| 西充县| 时尚| 北辰区| 灵石县| 黑水县| 庆云县| 梁山县| 休宁县| 长海县| 新竹县| 沂南县| 合山市| 临沧市| 康乐县| 中西区| 乐都县| 西吉县|