最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

python中的屬性管理機(jī)制詳解

 更新時(shí)間:2022年06月23日 09:51:49   作者:henry_rhy  
這篇文章主要介紹了python中的屬性管理機(jī)制,主要包括私有屬性和屬性限制-__slots__方法,文中詳細(xì)介紹了python中如何去聲明變量的相關(guān)知識(shí),需要的朋友可以參考下

一、私有屬性

  • Python并沒有真正的私有化支持,但可用下劃線得到偽私有,有一項(xiàng)大多數(shù) Python 代碼都遵循的習(xí)慣:帶有下劃線,前綴的名稱應(yīng)被視為非公開的 API 的一部分(無論是函數(shù)、 方法還是數(shù)據(jù) 成員)
  • python中私有并沒有實(shí)現(xiàn)真正的私有,只是在保存屬性的時(shí)候改了個(gè)名字,在外部無法直接方法

私有屬性具體表現(xiàn)為:

  • _參數(shù)名 : 聲明式私有屬性
  • __參數(shù)名 : _類名 + 私有屬性名
class Attributes:
    attr = 100
    # 聲明式私有屬性
    _attr2 = 999
    # _類名 + 私有屬性名
    __attr3 = 888
print(Attributes.attr)
print(Attributes._attr2)

雙下劃線的私有屬性,在去調(diào)用的時(shí)候 ,并沒有__attr3 這個(gè)屬性名,用 dict 屬性,去查看屬性字典看下:

在這里插入圖片描述
可以看到是雙下劃線的私有屬性是:_類名 + 私有屬性名

二、屬性限制-__slots__方法

  1. 定義過slots屬性來限制類實(shí)例的屬性,只能綁定slots指定的屬性,不能添加slots之外的屬性
  2. 添加slots之外的屬性,會(huì)直接報(bào)錯(cuò)
class Demo:
    使用__slots__ 給對(duì)象做屬性限制,只能添加指定屬性name,age
    __slots__ = ['name', 'age']   
m = Demo()
m.name = 111
m.age = 18
print(m.name,m.age)
再去添加指定屬性之外的屬性
m.sex= 男

執(zhí)行結(jié)果:
報(bào)錯(cuò):AttributeError: ‘Demo’ object has no attribute ‘sex’ 對(duì)象Demo沒有 ‘sex’ 這個(gè)屬性

在這里插入圖片描述

三、python中如何去聲明變量

語(yǔ)法:參數(shù),屬性的類型

例如:a: int = [11, 22, 3] 參數(shù)a ,類型為int ,值為 [11, 22, 3]

python中可以聲明變量或者參數(shù)的類型,但是實(shí)際上代碼執(zhí)行是不會(huì)去校驗(yàn)類型

a: int = "python"    # 設(shè)置的為int類型,但是傳值為字符串類型
b: str = 11     # 設(shè)置的為字符串類型,但是傳值為int類型
c: list = {11, 22, 33}     # 設(shè)置的為列表,但是傳值為字典
print(a, b, c)      # ==========》依然可以執(zhí)行打印出來

# 函數(shù)參數(shù)的類型聲明:
def work(name: str, age: int):    # 設(shè)置的為字符串類型 和 int類型

    print('name的值為', name)
    print('age的值為', age)

# 實(shí)際傳參一個(gè)列表,一個(gè)字典
work([11,22,33],{'a':1,'b':2})

執(zhí)行結(jié)果:

在這里插入圖片描述

四、python中的有關(guān)屬性

__getattr__方法:

用法:獲取屬性,屬性不存在時(shí)觸發(fā)的方法
特殊流程:當(dāng)去獲取屬性時(shí),先執(zhí)行__getattribute__去看有沒有屬性,有就返回,如果沒有就去執(zhí)行__getattr__方法,返回屬性不存在

getattribute(self, item):

用法:屬性訪問觸發(fā)的魔術(shù)方法,查找屬性時(shí),第一時(shí)間會(huì)調(diào)用該方法

setattr(self, key, value):

用法:設(shè)置屬性的方法,設(shè)置屬性時(shí),調(diào)用該方法設(shè)置屬性

__delattr__方法:

用法:在del 刪除屬性時(shí)觸發(fā),刪除屬性的方法

class MyDemo(object):

    def __getattribute__(self, item):
        """
        屬性訪問觸發(fā)的魔術(shù)方法
        :param item: 獲取的屬性名
        :return: 獲取到的屬性值
        """
        print("您要獲取的屬性為:", item)
        value = super().__getattribute__(item)    # 繼承父類
        return value

    def __setattr__(self, key, value):
        """
        設(shè)置屬性的方法
        :param key:屬性名
        :param value: 屬性值
        :return:
        """
        print("您要設(shè)置的屬性名{},屬性值為:{}".format(key, value))
        super().__setattr__(key, value)

    def __delattr__(self, item):
        """
        刪除屬性的方法
        :param item: 屬性名
        :return:
        """
        print("您要?jiǎng)h除的屬性為:", item)
        super().__delattr__(item)

    def __getattr__(self, item):
        """
        獲取屬性,屬性不存在時(shí)觸發(fā)的方法
        :param item:
        :return:
        """
        print("獲取的屬性{},不存在".format(item))
        return 99


m = MyDemo()

print("************************* 屬性設(shè)置 ******************************")
# 屬性設(shè)置
# 設(shè)置屬性方式一:
m.aa = 999
m.name = 'musen'

# 設(shè)置屬性方式二:setattr方法:
setattr(MyDemo(), 'age', 18)

print("************************ 獲取屬性 *******************************")
# 獲取屬性
# 方式一:
print(m.aa)
print(m.name)

# 方式二:getattr 方法
print(getattr(m,'name'))

print("************************ 刪除屬性 ********************************")
# 刪除屬性
# 方式一:
del m.aa

# 方式二:delattr 方法
delattr(m, 'age')

到此這篇關(guān)于python中的屬性管理機(jī)制的文章就介紹到這了,更多相關(guān)python屬性管理內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Python操作MySQL MongoDB Oracle三大數(shù)據(jù)庫(kù)深入對(duì)比

    Python操作MySQL MongoDB Oracle三大數(shù)據(jù)庫(kù)深入對(duì)比

    對(duì)于數(shù)據(jù)分析師來說,學(xué)習(xí)數(shù)據(jù)庫(kù)最重要的就是學(xué)習(xí)它們的查詢功能。這篇文章就以這個(gè)為切入點(diǎn),為大家講述如何用Python操作這3個(gè)數(shù)據(jù)庫(kù)
    2021-10-10
  • python 中sys.getsizeof的用法說明

    python 中sys.getsizeof的用法說明

    這篇文章主要介紹了python 中sys.getsizeof的用法說明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-05-05
  • Python?Concurrent?Futures解鎖并行化編程的魔法示例

    Python?Concurrent?Futures解鎖并行化編程的魔法示例

    Python的concurrent.futures模塊為并行化編程提供了強(qiáng)大的工具,使得開發(fā)者能夠輕松地利用多核心和異步執(zhí)行的能力,本文將深入探討concurrent.futures的各個(gè)方面,從基礎(chǔ)概念到高級(jí)用法,為讀者提供全面的了解和實(shí)用的示例代碼
    2023-12-12
  • Python基于回溯法子集樹模板解決取物搭配問題實(shí)例

    Python基于回溯法子集樹模板解決取物搭配問題實(shí)例

    這篇文章主要介紹了Python基于回溯法子集樹模板解決取物搭配問題,簡(jiǎn)單描述了搭配問題并結(jié)合實(shí)例形式分析了Python使用回溯法子集樹模板解決取物搭配問題的具體步驟與相關(guān)操作技巧,需要的朋友可以參考下
    2017-09-09
  • celery在python爬蟲中定時(shí)操作實(shí)例講解

    celery在python爬蟲中定時(shí)操作實(shí)例講解

    在本篇文章里小編給大家整理了一篇關(guān)于celery在python爬蟲中定時(shí)操作實(shí)例講解內(nèi)容,需要的朋友們可以參考下。
    2020-11-11
  • Python中處理字符串之isalpha()方法的使用

    Python中處理字符串之isalpha()方法的使用

    這篇文章主要介紹了Python中處理字符串之isalpha()方法的使用,是Python入門學(xué)習(xí)中的基礎(chǔ)知識(shí),需要的朋友可以參考下
    2015-05-05
  • Python3.10新特性之match語(yǔ)句示例詳解

    Python3.10新特性之match語(yǔ)句示例詳解

    這篇文章主要為大家介紹了Python3.10新特性之match語(yǔ)句示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-02-02
  • pycharm訪問mysql數(shù)據(jù)庫(kù)的方法步驟

    pycharm訪問mysql數(shù)據(jù)庫(kù)的方法步驟

    這篇文章主要介紹了pycharm訪問mysql數(shù)據(jù)庫(kù)的方法步驟。文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-06-06
  • Django session登陸并獲取值的實(shí)例

    Django session登陸并獲取值的實(shí)例

    這篇文章主要介紹了Django session登陸并獲取值的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2021-03-03
  • Python圖像處理之Hough變換檢測(cè)直線

    Python圖像處理之Hough變換檢測(cè)直線

    霍夫變換是一種特征檢測(cè)(feature?extraction),被廣泛應(yīng)用在圖像分析,本文將利用Hough變換實(shí)現(xiàn)直線檢測(cè),感興趣的小伙伴可以了解一下
    2023-07-07

最新評(píng)論

松潘县| 阿拉善盟| 堆龙德庆县| 静海县| 临城县| 新沂市| 龙南县| 邵阳市| 惠州市| 芜湖县| 丰镇市| 波密县| 新兴县| 讷河市| 宣武区| 黄龙县| 达州市| 邛崃市| 横峰县| 富锦市| 安福县| 宝清县| 定边县| 辰溪县| 怀安县| 黄冈市| 吉林省| 汕尾市| 扎鲁特旗| 汉沽区| 纳雍县| 扶余县| 吐鲁番市| 白河县| 漠河县| 化州市| 靖远县| 宁津县| 扶风县| 奈曼旗| 五河县|