亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專欄INFORMATION COLUMN

__slot__ 限制

lavnFan / 1219人閱讀

摘要:限制上一篇有提到通過(guò)動(dòng)態(tài)綁定在類外部定義方法,然后動(dòng)態(tài)地給類加上新的功能,使得類的實(shí)例都能調(diào)用外部方法。這樣子類實(shí)例允許定義的屬性就是自身的父類的限定的屬性。但是屬性沒(méi)有在限制中,故不能動(dòng)態(tài)綁定,會(huì)報(bào)錯(cuò)。

限制__slot__

上一篇有提到通過(guò)動(dòng)態(tài)綁定:在類外部定義方法,然后動(dòng)態(tài)地給類加上新的功能,使得類的實(shí)例都能調(diào)用外部方法。
但如果要限制實(shí)例的屬性,不允許動(dòng)態(tài)地添加,該怎么辦呢?

為了達(dá)到限制的目的,python允許在定義class的時(shí)候,定義一個(gè)特殊的 slots 變量,來(lái)限制該class實(shí)例動(dòng)態(tài)添加屬性。
那使用__slot__的好處呢?

防止用戶隨意動(dòng)態(tài)增加實(shí)例屬性;

節(jié)約內(nèi)存,因?yàn)閯?dòng)態(tài)綁定時(shí)屬性存儲(chǔ)在__dict__中;

更快的屬性訪問(wèn)速度。

例如:只允許對(duì)Student實(shí)例添加 name 和 age 屬性。

>>> class Student(object):
...      __slots__ = ("name","age")    # 使用tuple定義允許綁定的屬性名稱
>>> s = Student()                      # 創(chuàng)建新的實(shí)例
>>> s.name = "xlp"                     # 綁定屬性name
>>> s.age = 24                         # 綁定屬性age 
>>> s.score = 99                       # 綁定屬性score

# 但是score沒(méi)有放到__slots__中,所以不能綁定score屬性,報(bào)錯(cuò)。
Traceback (most recent call last):
  File "", line 1, in 
AttributeError: "Student" object has no attribute "score"

?。?!但是__slots__定義的屬性只對(duì)當(dāng)前類的實(shí)例起作用,對(duì)繼承的子類是不起作用的。除非在子類中也定義__slots__。
這樣子類實(shí)例允許定義的屬性就是自身的__slots__ + 父類的__slots__ 限定的屬性。
例如:

>>> class SStudent(Student):
...     __slots__ = "gender"
...
>>> g = SStudent()
>>> g.name = "xxx"
>>> g.score = 99                # 子類依舊可以動(dòng)態(tài)綁定屬性
>>> g.gender = "Female"
>>> g.teacher = "Mrs. Wang"    # 不允許綁定咯~
Traceback (most recent call last):
 File "", line 1, in 
AttributeError: "SStudent" object has no attribute "teacher"

子類SStudent除掉可以綁定name、age,還可以綁定定義在子類__slot__中的gender屬性。
但是teacher屬性沒(méi)有在__slot__限制中,故不能動(dòng)態(tài)綁定,會(huì)報(bào)錯(cuò)。


? thanks for watching, keep on updating...
點(diǎn)個(gè)贊再走吧

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://www.ezyhdfw.cn/yun/44978.html

相關(guān)文章

  • 如何優(yōu)化Python占用的內(nèi)存

    摘要:概述如果程序處理的數(shù)據(jù)比較多比較復(fù)雜,那么在程序運(yùn)行的時(shí)候,會(huì)占用大量的內(nèi)存,當(dāng)內(nèi)存占用到達(dá)一定的數(shù)值,程序就有可能被操作系統(tǒng)終止,特別是在限制程序所使用的內(nèi)存大小的場(chǎng)景,更容易發(fā)生問(wèn)題。下面我就給出幾個(gè)優(yōu)化占用內(nèi)存的幾個(gè)方法。 概述 如果程序處理的數(shù)據(jù)比較多、比較復(fù)雜,那么在程序運(yùn)行的時(shí)候,會(huì)占用大量的內(nèi)存,當(dāng)內(nèi)存占用到達(dá)一定的數(shù)值,程序就有可能被操作系統(tǒng)終止,特別是在限制程序所使用...

    ThreeWords 評(píng)論0 收藏0
  • 4-面向?qū)ο缶幊?/b>

    摘要:聲明對(duì)象構(gòu)造函數(shù),創(chuàng)建實(shí)例需要用到訪問(wèn)限制封裝性是面向?qū)ο蟮囊淮筇攸c(diǎn),如果要內(nèi)部屬性不被外部調(diào)用,需要加上兩個(gè)下劃線這樣就沒(méi)辦法直接通過(guò)實(shí)例來(lái)訪問(wèn)這個(gè)變量了因?yàn)檫@個(gè)時(shí)候,變量已經(jīng)被隱式的變成了繼承繼承的一般寫法為所有的類都繼承于這個(gè)類。 包 python中包的引用是一個(gè)坑,經(jīng)常出現(xiàn)這個(gè)文件夾的代碼,引用不到另一個(gè)文件夾的代碼,這個(gè)時(shí)候就必須要去更改環(huán)境變量,無(wú)論如何,總感覺(jué)不是一種優(yōu)雅...

    LancerComet 評(píng)論0 收藏0
  • Python 面向?qū)ο?/b>

    摘要:構(gòu)造函數(shù)構(gòu)造函數(shù)參數(shù)列表在使用類創(chuàng)建對(duì)象時(shí)自動(dòng)調(diào)用。類是從一堆對(duì)象中抽取相同的屬性及方法得出的,抽象類就是從一堆類中抽取相同的屬性及方法得出的。抽象類不能實(shí)例化對(duì)象。 1.構(gòu)造函數(shù) 構(gòu)造函數(shù):__init__(參數(shù)列表) :在使用類創(chuàng)建對(duì)象時(shí)自動(dòng)調(diào)用。注意:如果自己不寫構(gòu)造函數(shù),系統(tǒng)默認(rèn)也會(huì)加上一個(gè)空的構(gòu)造函數(shù)。對(duì)象屬性的優(yōu)先級(jí)高于類屬性,當(dāng)對(duì)象調(diào)用屬性時(shí),如果有對(duì)象屬性時(shí),先獲取對(duì)...

    jifei 評(píng)論0 收藏0
  • 流暢的python讀書筆記-第九章-符合Python風(fēng)格的對(duì)象

    摘要:以便于用戶理解的方式返回對(duì)象的字符串表示形式。函數(shù)會(huì)調(diào)用函數(shù),對(duì)來(lái)說(shuō),輸出的是一個(gè)有序?qū)Α4送?,還有用于支持內(nèi)置的構(gòu)造函數(shù)的方法。可散列實(shí)現(xiàn)了方法,使用推薦的異或運(yùn)算符計(jì)算實(shí)例屬性的散列值私有屬性最好用命名規(guī)則來(lái)實(shí)現(xiàn)這種方式有好有壞 絕對(duì)不要使用兩個(gè)前導(dǎo)下劃線,這是很煩人的自私行為。——Ian Bicking 對(duì)象表示形式 repr()  以便于開(kāi)發(fā)者理解的方式返回對(duì)象的字符串表示形式...

    fai1017 評(píng)論0 收藏0
  • Python學(xué)習(xí)之路28-符合Python風(fēng)格的對(duì)象

    摘要:本篇繼續(xù)學(xué)習(xí)之路,實(shí)現(xiàn)更多的特殊方法以讓自定義類的行為跟真正的對(duì)象一樣。之所以要讓向量不可變,是因?yàn)槲覀冊(cè)谟?jì)算向量的哈希值時(shí)需要用到和的哈希值,如果這兩個(gè)值可變,那向量的哈希值就能隨時(shí)變化,這將不是一個(gè)可散列的對(duì)象。 《流暢的Python》筆記。本篇是面向?qū)ο髴T用方法的第二篇。前一篇講的是內(nèi)置對(duì)象的結(jié)構(gòu)和行為,本篇?jiǎng)t是自定義對(duì)象。本篇繼續(xù)Python學(xué)習(xí)之路20,實(shí)現(xiàn)更多的特殊方法以讓...

    Eric 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<