国产精品久久久aaaa,日日干夜夜操天天插,亚洲乱熟女香蕉一区二区三区少妇,99精品国产高清一区二区三区,国产成人精品一区二区色戒,久久久国产精品成人免费,亚洲精品毛片久久久久,99久久婷婷国产综合精品电影,国产一区二区三区任你鲁

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

python類的多態和類的property屬性

python爬蟲知識分享 ? 來源:python爬蟲知識分享 ? 作者:python爬蟲知識分享 ? 2022-03-09 16:37 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

python類的多態

多態,是指在同一類型下的不同形態。

比如下面這段代碼

class People:
    def speak(self):
        pass

class American(People):
    def speak(self):
        print("Hello, boys")

class Chinese(People):
    def speak(self):
        print("你好,老鐵")

p1 = American()
p2 = Chinese()

American 和 Chinese 都繼承了 People 類,但他們在 speak() 函數下,卻有不同的形態表現。American 說英文,Chinese 說漢語。

倘若現在有一個 do_speak 函數

def do_speak(people):
    people.speak()

do_speak(p1)
do_speak(p2)

那么無論傳入的 American 實例還是 Chinese 實例,只要他有實現 speak 方法都可以。

這就是 Python 中非常有名鴨子類型:一個對象只要“看起來像鴨子,走起路來像鴨子”,那它就可以被看做是鴨子。

套入剛剛的代碼實例中,就是一個對象,只要有 speak 方法,那么他就是一個 do_speak 方法所需要的 people 對象。

類的 property 屬性

在之前的學習中,對象的屬性,我們都是通過把變量值賦值給對象本身來實現的。

>>> class Student:pass
...
>>>
>>> s = Student()
>>> s.name = "王炳明"
>>> s.age = 27

直接賦值會存在一個問題,就是無法對屬性值進行合法性較驗,比如我給 age 賦值的是負數,在業務上這種數據是不合法的。但上面那種寫法是無法檢查出來的。

>>> s.age = -27
>>> s.age
-27

為了實現屬性的合法性校驗,Python 引入的 property 屬性。

請看下面這段代碼

class Student:
    @property
    def age(self):
        return self._age

    @age.setter
    def age(self, value):
        if 0 <= value <= 150:
            self._age = value
        else:
            raise ValueError("Valid value must be in [0, 150]")

此時再對 age 屬性進行賦值就會對 value 的值進行合法性檢查,小于 0 或者 大于 150 的都是不合法數據。

>>> s = Student()
>>> s.age = -27
Traceback (most recent call last):
  File "", line 1, in 
  File "", line 10, in age
ValueError: Valid value must be in [0, 150]

由此我們知道了 property ,其實是 Python 中一個內置的裝飾器,它可以在新式類中把一個函數 改造 成屬性。

當你讀取屬性值時,會進入被 property 裝飾的函數。

當你對屬性進行賦值時,會進入被 @xx.setter 裝飾的函數。

兩個裝飾器,一定是 @property 在前面,而 @xx.setter 在后

審核編輯:符乾江

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 面向對象
    +關注

    關注

    0

    文章

    64

    瀏覽量

    10251
  • python
    +關注

    關注

    57

    文章

    4876

    瀏覽量

    90024
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    5水晶頭和6水晶頭可以混用不

    5水晶頭和6水晶頭不建議混用,原因如下: 1. 物理結構差異導致兼容性問題 銅芯直徑不同: 5水晶頭適配的網線銅芯直徑為0.45-0.51毫米,而6水晶頭需適配0.52-0.5
    的頭像 發表于 02-10 10:08 ?3482次閱讀

    如何分辨五網線

    分辨五與六網線的方法如下: 外皮標識 五網線外皮標注“CAT5”,六網線標注“CAT6”。這是最直觀的區分方式,標識直接表明網線的類別。 傳輸性能 五
    的頭像 發表于 01-28 10:21 ?1104次閱讀

    6水晶頭能向下兼容5網線嗎?

    6水晶頭能向下兼容5網線,但需注意兼容性細節及潛在影響,具體分析如下: 一、物理兼容性:可插入,但需滿足條件 線徑匹配 6水晶頭進線孔徑較大(通常≥1.08mm),以適應6網線
    的頭像 發表于 01-04 11:23 ?2705次閱讀

    用5水晶頭接6網線會有什么后果?

    使用5水晶頭連接6網線,可能導致接觸不良、信號干擾、傳輸速率受限、網絡穩定性下降及設備損壞風險增加,具體后果及分析如下: 1. 物理結構不匹配導致接觸問題 線徑差異:6網線銅芯直徑通常為
    的頭像 發表于 12-31 10:10 ?1.3w次閱讀

    圖解碼說-六大UML圖關系(依賴,繼承,實現,關聯,聚合,組合)

    基礎 UML圖的基本單元,如下所示 + ----------------+ | Animal | // 名+ ----------------+ | - name : String | //
    的頭像 發表于 11-05 09:03 ?683次閱讀
    圖解碼說-六大UML<b class='flag-5'>類</b>圖關系(依賴,繼承,實現,關聯,聚合,組合)

    跳線VS超五/超六——如何選擇“網絡血管”?

    在布線工程中,選對跳線類型直接影響網絡性能與成本。六跳線雖非“全能選手”,但在特定場景下性價比突出。 一、六跳線VS超五:千兆網絡的“分水嶺” 案例:某小區升級千兆光纖到戶,若使用超五
    的頭像 發表于 10-21 10:24 ?1031次閱讀
    六<b class='flag-5'>類</b>跳線VS超五<b class='flag-5'>類</b>/超六<b class='flag-5'>類</b>——如何選擇“網絡血管”?

    超六網線水晶頭和六水晶頭通用嗎

    超六網線水晶頭與六水晶頭在物理結構上不完全通用,但通過兼容設計或特殊處理可實現互連,不過可能影響性能。 以下是具體分析: 一、超六與六水晶頭的核心區別 1. 結構差異 六
    的頭像 發表于 10-13 10:32 ?7041次閱讀
    超六<b class='flag-5'>類</b>網線水晶頭和六<b class='flag-5'>類</b>水晶頭通用嗎

    超六跳線是否可以接到六配線架

    超六跳線可以接到六配線架,原因如下: 物理接口兼容性:超六跳線與六配線架均采用標準RJ45接口,物理形態完全一致,可直接插拔連接。這種設計確保了不同類別網線在物理層面的通用性,
    的頭像 發表于 09-18 09:52 ?903次閱讀

    網線接口能插六網線嗎

    網線接口(RJ45)可以插六網線,但實際使用效果需結合具體場景和設備綜合判斷。以下是詳細分析: 一、物理兼容性:接口通用,但需注意細節 RJ45接口標準統一 五(Cat5)、超五
    的頭像 發表于 09-08 10:32 ?6662次閱讀

    網線面板分五

    網線面板確實分五和六,這種分類主要基于其適配的網線類型及傳輸性能,以下是具體說明: 一、分類依據 適配網線類型 五面板:專為五網線(CAT5)設計,適用于百兆以太網(100Mb
    的頭像 發表于 08-08 09:46 ?4350次閱讀

    網線能用六水晶頭嗎

    網線可以使用六水晶頭,但需注意兼容性和實際效果,且通常不建議長期或關鍵場景下這樣搭配。 以下是詳細分析: 一、五網線與六水晶頭的兼容性 物理結構兼容性 線徑與排列:五
    的頭像 發表于 08-06 10:29 ?9009次閱讀
    五<b class='flag-5'>類</b>網線能用六<b class='flag-5'>類</b>水晶頭嗎

    超速網線屬于超六網線嗎

    超速網線并非標準術語,若其指代支持10Gbps傳輸的六改進型網線,則可歸類為超六網線。以下為具體分析: 在網線分類標準中,并不存在“六超速網線”這一官方命名。若該名稱指代通過
    的頭像 發表于 08-05 10:00 ?1249次閱讀

    網線超6與6的區別

    網線超6(Cat 6a)與6(Cat 6)的主要區別如下: 1. 傳輸性能 6網線(Cat 6): 支持最高250 MHz的帶寬。 適用于千兆以太網(1 Gbps),最大傳輸距離100米。 超
    的頭像 發表于 04-16 10:04 ?1.5w次閱讀

    買水晶頭如何匹配超5 67

    購買與超5、6、7網線匹配的水晶頭時,需遵循以下原則,以確保傳輸性能、穩定性和兼容性: 一、匹配原則 超5網線 推薦搭配:超5水晶
    的頭像 發表于 03-26 10:05 ?6692次閱讀

    與超六水晶頭通用嗎

    水晶頭和超六水晶頭在物理接口上是兼容的,可以互換使用,但性能可能會有所下降。以下是對六水晶頭和超六水晶頭通用性的詳細分析: 一、定義與標準 六
    的頭像 發表于 03-06 10:20 ?1.1w次閱讀