欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python面向?qū)ο缶幊讨?lèi)的封裝

 更新時(shí)間:2021年11月01日 11:56:35   作者:一碗周  
這篇文章主要介紹了Python面向?qū)ο缶幊讨?lèi)的封裝封裝指屬性和方法的抽象,屬性的抽象又指對(duì)類(lèi)的屬性進(jìn)行定義、隔離和保護(hù),下面來(lái)看看文章的具體內(nèi)容吧,需要的朋友可以參考一下,希望對(duì)你有所幫助

1、封裝的理解

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

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

分為私有屬性和公開(kāi)屬性

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

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

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

分為私有方法和公開(kāi)方法:

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

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

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

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

2、私有類(lèi)屬性、公開(kāi)類(lèi)屬性、私有實(shí)例屬性和公開(kāi)實(shí)例屬性

2.1 公開(kāi)類(lèi)屬性

公開(kāi)類(lèi)屬性就是類(lèi)屬性,語(yǔ)法結(jié)構(gòu)

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

2.2 私有類(lèi)屬性

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

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

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

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

示例代碼如下:

class TestClass:
    __number = 0

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

    @classmethod  # 類(lèi)方法
    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'

在類(lèi)外賣(mài)訪問(wèn).__number就會(huì)報(bào)出AttributeError異常

2.3 公開(kāi)實(shí)例屬性

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

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

2.4 私有實(shí)例屬性

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

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

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

有效保證了屬性維護(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)換后,類(lèi)內(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
# 可以通過(guò) 對(duì)象名._類(lèi)名__屬性 的方式來(lái)訪問(wèn)

可以通過(guò)對(duì)象名._類(lèi)名__屬性的方式來(lái)訪問(wèn)。

3、私有方法和公開(kāi)方法

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

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

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

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

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

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

4、類(lèi)的保留屬性

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

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

僅用<類(lèi)名>訪問(wèn)的保留屬性

保留屬性 描述
__name__ 類(lèi)的名詞
__qualname__ 以.分隔從模板全局命名空間開(kāi)始的類(lèi)名稱(chēng)
__bases__ 類(lèi)所繼承的基類(lèi)名稱(chēng)

5、類(lèi)的保留方法

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

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

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

相關(guān)文章

  • 使用python?xmlrpc連接odoo方式

    使用python?xmlrpc連接odoo方式

    這篇文章主要介紹了使用python?xmlrpc連接odoo方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-01-01
  • python操作gitlab API過(guò)程解析

    python操作gitlab API過(guò)程解析

    這篇文章主要介紹了python操作gitlab API過(guò)程解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-12-12
  • Django中使用CORS實(shí)現(xiàn)跨域請(qǐng)求過(guò)程解析

    Django中使用CORS實(shí)現(xiàn)跨域請(qǐng)求過(guò)程解析

    這篇文章主要介紹了Django中使用CORS實(shí)現(xiàn)跨域請(qǐng)求過(guò)程解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-08-08
  • 將 Ubuntu 16 和 18 上的 python 升級(jí)到最新 python3.8 的方法教程

    將 Ubuntu 16 和 18 上的 python 升級(jí)到最新 python3.8 的方法教程

    這篇文章主要介紹了如何將 Ubuntu 16 和 18 上的 python 升級(jí)到最新 3.8 版,本文通過(guò)實(shí)例代碼相結(jié)合給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-03-03
  • 用python實(shí)現(xiàn)文件備份

    用python實(shí)現(xiàn)文件備份

    大家好,本篇文章主要講的是用python實(shí)現(xiàn)文件備份,感興趣的同學(xué)趕快來(lái)看一看吧,對(duì)你有幫助的話(huà)記得收藏一下
    2022-01-01
  • matplotlib之pyplot模塊坐標(biāo)軸范圍設(shè)置(autoscale(),xlim(),ylim())

    matplotlib之pyplot模塊坐標(biāo)軸范圍設(shè)置(autoscale(),xlim(),ylim())

    這篇文章主要介紹了matplotlib之pyplot模塊坐標(biāo)軸范圍設(shè)置(autoscale(),xlim(),ylim()),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-03-03
  • 詳解Python中的null是什么

    詳解Python中的null是什么

    這篇文章主要介紹了Python中的null是什么,Python中其實(shí)沒(méi)有null這個(gè)詞,取而代之的是None對(duì)象,即特殊類(lèi)型NoneType,代表空、沒(méi)有,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),需要的朋友可以參考下
    2022-09-09
  • Django網(wǎng)絡(luò)框架之HelloDjango項(xiàng)目創(chuàng)建教程

    Django網(wǎng)絡(luò)框架之HelloDjango項(xiàng)目創(chuàng)建教程

    這篇文章主要介紹了Django網(wǎng)絡(luò)框架之HelloDjango項(xiàng)目創(chuàng)建,結(jié)合實(shí)例形式詳細(xì)分析了Django框架創(chuàng)建HelloDjango項(xiàng)目的具體步驟與詳細(xì)實(shí)現(xiàn)技巧,需要的朋友可以參考下
    2019-06-06
  • 利用python模擬sql語(yǔ)句對(duì)員工表格進(jìn)行增刪改查

    利用python模擬sql語(yǔ)句對(duì)員工表格進(jìn)行增刪改查

    這篇文章主要給大家介紹了關(guān)于利用python模擬sql語(yǔ)句實(shí)現(xiàn)對(duì)員工表格進(jìn)行增刪改查的相關(guān)資料,文中介紹了詳細(xì)的需求以及示例代碼,對(duì)大家的理解和學(xué)習(xí)具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起看看吧。
    2017-07-07
  • django中只使用ModleForm的表單驗(yàn)證

    django中只使用ModleForm的表單驗(yàn)證

    這篇文章主要介紹了django中只使用ModleForm的表單驗(yàn)證的相關(guān)資料,需要的朋友可以參考下
    2022-12-12

最新評(píng)論