人妖在线一区,国产日韩欧美一区二区综合在线,国产啪精品视频网站免费,欧美内射深插日本少妇

新聞動(dòng)態(tài)

Python面向?qū)ο缶幊讨惖姆庋b

發(fā)布日期:2021-12-16 13:59 | 文章來源:源碼之家

1、封裝的理解

封裝(Encapsulation):屬性和方法的抽象

屬性的抽象:對(duì)類的屬性(變量)進(jìn)行定義、隔離和保護(hù)

分為私有屬性和公開屬性

  • 私有屬性:只能在類內(nèi)部訪問
  • 公開屬性:可以通過類、對(duì)象名訪問

可以選擇公開或隱藏屬性,隱藏屬性的內(nèi)在機(jī)理

方法的抽象:對(duì)類的方法(函數(shù))進(jìn)行定義、隔離和保護(hù)

分為私有方法和公開方法:

  • 私有方法:只能在類內(nèi)部訪問
  • 公開方法:可以通過類、對(duì)象名訪問

可以選擇公開或隱藏方法,隱藏方法的內(nèi)部邏輯

  • 目標(biāo)是形成一個(gè)對(duì)外可操作屬性和方法的接口

封裝就是讓數(shù)據(jù)和代碼稱為類的過程,表達(dá)為:類——屬性——方法

2、私有類屬性、公開類屬性、私有實(shí)例屬性和公開實(shí)例屬性

2.1 公開類屬性

公開類屬性就是類屬性,語法結(jié)構(gòu)

class ClassName:
 <類屬性名> = <類屬性初值>
 def __init__(self,[參數(shù)1], [參數(shù)2], ...[參數(shù)n]):
  self.<實(shí)例屬性名> = <實(shí)例屬性初值>
 ...

2.2 私有類屬性

私有類屬性只能當(dāng)前類進(jìn)行訪問,子類不能訪問。語法結(jié)構(gòu)

class ClassName:
 <__私有類屬性名> = <私有類屬性初值>
 def __init__(self,[參數(shù)1], [參數(shù)2], ...[參數(shù)n]):
  self.<實(shí)例屬性名> = <實(shí)例屬性初值>
 ...

.<類屬性>或者<對(duì)象名>.<類屬性>的方式訪問

有效保證了屬性維護(hù)的可控性

示例代碼如下:

class TestClass:
 __number = 0
 def __init__(self, num_value):
  for i in range(num_value + 1):
TestClass.__number += i
 @classmethod  # 類方法
 def sum_number(cls):
  return TestClass.__number

value1 = TestClass(100)
print(TestClass.sum_number())  # 5050
# print(value1.__number)  # AttributeError: 'TestClass' object has no attribute '__number'

在類外賣訪問.__number就會(huì)報(bào)出AttributeError異常

2.3 公開實(shí)例屬性

公開實(shí)例屬性就等于示例屬性,語法結(jié)構(gòu)

class <類名>:
 <類屬性名> = <類方法值>
 def __init__(self, <參數(shù)列表>):
  self.<實(shí)例屬性名> = <實(shí)例屬性值>
 ...

2.4 私有實(shí)例屬性

私有實(shí)例屬性只能在當(dāng)前類內(nèi)部使用,子類也不能使用。語法結(jié)構(gòu)

class <類名>:
 <類屬性名> = <類方法值>
 def __init__(self, <參數(shù)列表>):
  self.<__私有實(shí)例屬性名> = <實(shí)例屬性值>
 ...

.<類屬性>或者<對(duì)象名>.<類屬性>的方式訪問

有效保證了屬性維護(hù)的可控性

示例代碼:

class TestClass:
 def __init__(self, num_value):
  self.__number = 0
  for i in range(num_value + 1):
self.__number += i
 def sum_number(self):
  return self.__number

value1 = TestClass(100)
print(value1.sum_number())  # 5050
# print(value1.__number)  # AttributeError: 'TestClass' object has no attribute '__number'

2.5 私有屬性不一定真的私有

私有屬性的雙下劃線只是一種轉(zhuǎn)換約定,轉(zhuǎn)換后,類內(nèi)原有名字發(fā)生了變化,這是一種形式上的私有

示例代碼:

class TestClass:
 def __init__(self, num_value):
  self.__number = 0
  for i in range(num_value + 1):
self.__number += i
 def sum_number(self):
  return self.__number

value1 = TestClass(100)
print(value1.sum_number())  # 5050
print(value1._TestClass__number)  # 5050
# 可以通過 對(duì)象名._類名__屬性 的方式來訪問

可以通過對(duì)象名._類名__屬性的方式來訪問。

3、私有方法和公開方法

定義方法是在類內(nèi)部定義并使用的方法。語法結(jié)構(gòu)

class <類名>:
 def <__私有方法名>(self, <參數(shù)列表>):
  ...

私有方法定義的時(shí)候?qū)傩悦智懊嫘枰獌蓚€(gè)下劃線( __ ).

各類方法都可以通過增加雙下?lián)Q線的方式將方法變?yōu)樗接蟹椒?/p>

私有方法在形式上保護(hù)了Python類內(nèi)部使用的函數(shù)邏輯

私有屬性與公開是程序員邏輯,不是安全邏輯,重視約定

4、類的保留屬性

Python解釋器預(yù)留的類屬性,以雙下?lián)Q線開頭或者結(jié)尾。

  • 保留屬性也叫特殊屬性
  • 以雙下劃線開頭和結(jié)尾
  • 作用是為理解Python類提供了統(tǒng)一的屬性接口
  • 屬性值具有特殊的含義,類定義后直接使用

僅用<類名>訪問的保留屬性

保留屬性 描述
__name__ 類的名詞
__qualname__ 以.分隔從模板全局命名空間開始的類名稱
__bases__ 類所繼承的基類名稱

5、類的保留方法

保留方法是Python解釋器預(yù)留的方法,以雙下劃線開頭和結(jié)尾

  • 保留方法也叫特殊方法
  • 以雙下劃線開頭和結(jié)尾
  • 作用是為理解Python類提供了統(tǒng)一的方法接口
  • 方法邏輯:具有特定的含義,一般與操作符關(guān)聯(lián),類定義需要重載

到此這篇關(guān)于Python面向?qū)ο缶幊讨惖姆庋b的文章就介紹到這了,更多相關(guān)Python類的封裝內(nèi)容請(qǐng)搜索本站以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持本站!

版權(quán)聲明:本站文章來源標(biāo)注為YINGSOO的內(nèi)容版權(quán)均為本站所有,歡迎引用、轉(zhuǎn)載,請(qǐng)保持原文完整并注明來源及原文鏈接。禁止復(fù)制或仿造本網(wǎng)站,禁止在非www.sddonglingsh.com所屬的服務(wù)器上建立鏡像,否則將依法追究法律責(zé)任。本站部分內(nèi)容來源于網(wǎng)友推薦、互聯(lián)網(wǎng)收集整理而來,僅供學(xué)習(xí)參考,不代表本站立場(chǎng),如有內(nèi)容涉嫌侵權(quán),請(qǐng)聯(lián)系alex-e#qq.com處理。

相關(guān)文章

實(shí)時(shí)開通

自選配置、實(shí)時(shí)開通

免備案

全球線路精選!

全天候客戶服務(wù)

7x24全年不間斷在線

專屬顧問服務(wù)

1對(duì)1客戶咨詢顧問

在線
客服

在線客服:7*24小時(shí)在線

客服
熱線

400-630-3752
7*24小時(shí)客服服務(wù)熱線

關(guān)注
微信

關(guān)注官方微信
頂部