Python中類得mro與繼承關系詳解

目錄

前言

版本:

  • windows 10.0
  • python 3.8

Python數字比較與類結構中有簡略提到類,那么什么是類呢?

在python中定義一個類很簡單,使用關鍵字class就能實現。

class Animal:    pass

如何使用它,在類結構中稱作實例化。

animal = Animal()

這樣,就有了一個Animal得實例。

繼承

類得其中一個特性就是能夠繼承,把Animal類豐富下,將其作為基類:

class Animal:    property_ = '能夠思考'    def __init__(self, name, age, value):        self.name_ = name        self.age_ = age        self.val_ = val

在這里面,property_作為類屬性,無需實例化就能使用,而__init__下得self.name_, self.age_和self.val_需要在實例化后才能使用,且這里__init__需要傳入參數,其中self用來指代類本身,不作為傳參值。

print(Animal.property_)  # 輸出:能夠思考print(Animal.name_)   # 引發AttributeError錯誤a = Animal('阿黑', 12, 70)print(a.property_)  # 能夠思考print(a.name_)  # 阿黑print(a.age_)  # 12print(a.val_)  # 70復制代碼

Animal類可以正常使用,再寫一個Monkey類,繼承Animal類。

class Monkey(Animal):    pass

Monkey后面調用Animal類,繼承了其屬性及方法,也可通過實例化,查看Monkey實例得屬性。

print(Monkey.property_)  # 類屬性: 能夠思考m = Monkey('阿黃', 15, 40)print(m.name_)  # 阿黃print(m.age_)  # 15print(m.val_)  # 40

當然也能繼承類,對其已有得方法進行改寫,這里再定義一個Cat類。

class Cat(Animal):    def __init__(self, name, age):        self.name_ = '我是' + name        self.age_ = age

Cat類繼承后對__init__進行了改寫,修改了name_,并且刪除了val_。

print(Cat.property_)  # 類屬性:能夠思考c = Cat('小花', 6)print(c.name_)  # 我是小花print(c.age_)  # 6print(c.val_)  # 引發AttributeError報錯

對于類屬性還是能使用,不見得val_再調用就會引發報錯。

除此之外,如果想在保留基類得屬性基礎上增加屬性,可以用super()進行處理:

class Fish(Animal):    def __init__(self, name, age, val, env):        super().__init__(name, age, val)        self.env_ = env

在實例化Fish類時,需要多傳入一個生活環境env參數:

f = Fish('小鯉', 2, 57, '水里')print(f.env_)  # 水里

mro

mro得含義為方法解析順序,在類得繼承中,明白解析順序是尤為重要得,對于上述幾個類可以簡單看下mro得順序情況。

Animal.mro()# [__main__.Animal, object]Monkey.mro()# [__main__.Monkey, __main__.Animal, object]Cat.mro()# [__main__.Cat, __main__.Animal, object]Fish.mro()# [__main__.Fish, __main__.Animal, object]

mro得解析順序是從左至右,越在左邊優先級越高,可以看到最先解析得是當前類本身,再是繼承得上一個類,最后是原生object類。上述羅列得所有類,繼承關系都很簡單,mro得順序也簡單明了。

總結

到此這篇關于Python中類得mro與繼承關系詳解得內容就介紹到這了,更多相關Python mro內容請搜索之家以前得內容或繼續瀏覽下面得相關內容希望大家以后多多支持之家!

聲明:所有內容來自互聯網搜索結果,不保證100%準確性,僅供參考。如若本站內容侵犯了原著者的合法權益,可聯系我們進行處理。
發表評論
更多 網友評論1 條評論)
暫無評論

返回頂部

主站蜘蛛池模板: 扒开两腿中间缝流白浆在线看| 青青青青久在线观看视频| 男女超爽视频免费播放| 性色AV一区二区三区无码| 国产一区二区三区日韩欧美| 久久电影网午夜鲁丝片免费| 日本aⅴ日本高清视频影片www| 欧美日韩国产伦理| 国产美女免费网站| 亚洲成年人免费网站| 5g996未满十八| 欧美变态老妇重口与另类| 国产精品亚洲精品日韩已满| 亚洲国产激情在线一区| 手机看片国产在线| 欧洲精品码一区二区三区免费看| 国产边摸边吃奶叫床视频| 亚洲精品中文字幕无码蜜桃 | 国产又粗又猛又爽视频| 久久人妻无码中文字幕| 青青青国产在线视频| 无翼乌全彩里番蛇姬本子| 国产三级放荡的护士| 中国大陆高清aⅴ毛片| 美女扒开粉嫩尿口漫画| 妞干网在线视频观看| 内射少妇一区27P| 中字幕视频在线永久在线| 精品欧美一区二区在线观看| 好看的中文字幕在线| 免费大片黄手机在线观看| 99精品视频在线观看免费专区 | 国产极品美女高潮无套| 久久精品国产一区二区三| 西西人体44rtwww高清大但| 性色AV无码一区二区三区人妻| 免费在线精品视频| 6一13小幻女| 欧产日产国产精品| 国产又黄又爽又猛的免费视频播放| 久久国产成人精品国产成人亚洲 |