成人性生交大片免费看视频r_亚洲综合极品香蕉久久网_在线视频免费观看一区_亚洲精品亚洲人成人网在线播放_国产精品毛片av_久久久久国产精品www_亚洲国产一区二区三区在线播_日韩一区二区三区四区区区_亚洲精品国产无套在线观_国产免费www

主頁 > 知識庫 > 淺談Python類的單繼承相關(guān)知識

淺談Python類的單繼承相關(guān)知識

熱門標簽:白銀外呼系統(tǒng) 騰訊外呼線路 陜西金融外呼系統(tǒng) 激戰(zhàn)2地圖標注 海南400電話如何申請 哈爾濱ai外呼系統(tǒng)定制 廣告地圖標注app 公司電話機器人 唐山智能外呼系統(tǒng)一般多少錢

上文我們總結(jié)過了Python多繼承的相關(guān)知識,沒看過的小伙伴們也可以去看看,今天給大家介紹Python類的單繼承相關(guān)知識。

一、類的繼承

面向?qū)ο笕刂?,繼承Inheritance

人類和貓類都繼承自動物類。

個體繼承自父母,繼承了父母的一部分特征,但也可以有自己的個性。

在面向?qū)ο蟮氖澜缰?,從父類繼承,就可以直接擁有父類的屬性和方法,這樣就可以減少代碼、多服用。子類可以定義自己的屬性和方法

class Animal:
 
    def __init__(self,name):
        self._name = name
 
    def shout(self):
        print("{}  shouts".format(self.__class__.__name__))
    @property
    def name(self):
        return self._name
 
 
class Cat(Animal):
    pass
 
 
class Dog(Animal):
    pass
 
a = Animal("monster")
a.shout()           #   Animal  shouts
 
 
cat = Cat("garfield")
cat.shout()         #   Cat  shouts
print(cat.name)     #   garfield
 
 
dog = Dog("ahuang")
dog.shout()         #   Dog  shouts
print(dog.name)     #   ahuang

上例中我們可以看出,通過繼承、貓類、狗類不用寫代碼,直接繼承了父類的屬性和方法

繼承:

  • class Cat(Animal)這種形式就是從父類繼承,括號中寫上繼承的類的列表。
  • 繼承可以讓子類重父類獲取特征(屬性、方法)

父類:

  • Animal就是Cat的父類,也稱為基類、超類

子類:

  • Cat 就是Animal的子類,也成為派生類  

二、繼承的定義、查看繼承的特殊屬性和方法

格式

class 子類 (基類1[,基類2,……]):
    語句塊

如果類定義時,沒有基類列表,等同于繼承自【object】。在Python3中,【object】類是所有對象基類

查看繼承的特殊屬性和方法

特殊屬性  含義 示例
__base__  類的基類 
__bases__  類的基類元組 
__mro__  顯示方法查找順序,基類的元組 
mro()  同上  int.mro()
__subclasses__()  類的子類列表  int.__subclasses__()

三、繼承中的訪問控制

class Animal:
    __COUNT = 100
    HEIGHT = 0
 
    def __init__(self,age,weight,height):
        self.__COUNT += 1
        self.age = age
        self.__weight = weight
        self.HEIGHT = height
 
    def eat(self):
        print("{}  eat".format(self.__class__.__name__))
 
    def __getweight(self):
        print(self.__weight)
 
    @classmethod
    def showcount1(cls):
        print(cls.__COUNT)
 
    @classmethod
    def __showcount2(cls):
        print(cls.__COUNT)
 
    def showcount3(self):
        print(self.__COUNT)
 
class Cat(Animal):
    NAME = "CAT"
    __COUNT = 200
 
#a = Cat()              #   TypeError: __init__() missing 3 required positional arguments: 'age', 'weight', and 'height'
a = Cat(30,50,15)
a.eat()                 #   Cat  eat
print(a.HEIGHT)         #   15
#print(a.__COUNT)        #   AttributeError: 'Cat' object has no attribute '__COUNT'
#print(a.__showcount2)   #   AttributeError: 'Cat' object has no attribute '__showcount2'
#print(a.__getweight)    #   AttributeError: 'Cat' object has no attribute '__getweight'
a.showcount3()   #   101
a.showcount1()   #  100
print(a.NAME)    #    CAT
 
print(Animal.__dict__)  #   {'__module__': '__main__', '_Animal__COUNT': 100, 'HEIGHT': 0, '__init__': function Animal.__init__ at 0x020DC228>, 'eat': function Animal.eat at 0x020DC468>, '_Animal__getweight': function Animal.__getweight at 0x02126150>, 'showcount1': classmethod object at 0x020E1BD0>, '_Animal__showcount2': classmethod object at 0x020E1890>, 'showcount3': function Animal.showcount3 at 0x021264F8>, '__dict__': attribute '__dict__' of 'Animal' objects>, '__weakref__': attribute '__weakref__' of 'Animal' objects>, '__doc__': None}
print(Cat.__dict__)     #   {'__module__': '__main__', 'NAME': 'CAT', '_Cat__COUNT': 200, '__doc__': None}
print(a.__dict__)       #   {'_Animal__COUNT': 101, 'age': 30, '_Animal__weight': 50, 'HEIGHT': 15}

從父類繼承、自己沒有的,就可以到父類中找

私有的都是不可訪問的,但是本質(zhì)上依然是改了名稱放在這個屬性所在的類的了【__dict__】中,知道這個新民成就可以了直接找到這個隱藏的變量,這是個黑魔法慎用

總結(jié)

  • 繼承時,共有的,子類和實例都可以隨意訪問;私有成員被隱藏,子類和實例不可直接訪問,當私有變量所在類內(nèi)方法中可以訪問這個私有變量
  • Python通過自己一套實現(xiàn),實現(xiàn)和其他語言一樣的面向?qū)ο蟮睦^承機制

屬性查找順序:實例的【__dict__】------類的【__dict__】-----父類【__dict__】

如果搜索這些地方后沒有找到異常,先找到就立即返回

四、方法的重寫、覆蓋override

class Animal:
 
    def shout(self):
        print("Animal shouts")
 
class Cat(Animal):
 
    def shout(self):
        print("miao")
 
a = Animal()
a.shout()       #   Animal shouts
b  = Cat()
b.shout()       #   miao
 
print(a.__dict__)       #   {}
print(b.__dict__)       #   {}
print(Animal.__dict__)  #   {'__module__': '__main__', 'shout': function Animal.shout at 0x017BC228>, '__dict__': attribute '__dict__' of 'Animal' objects>, '__weakref__': attribute '__weakref__' of 'Animal' objects>, '__doc__': None}

Cat類中shout為什么沒有打印Animal中shout的方法,方法被覆蓋了?

  • 這是因為,屬性查找順序:實例的【__dict__】------類的【__dict__】-----父類【__dict__】

那子類如何打印父類的同命的方法

  • super()可以訪問到父類的屬性
class Animal:
 
    def shout(self):
        print("Animal shouts")
 
class Cat(Animal):
 
    def shout(self):
        print("miao")
 
    def shout(self):
        print("super():   " , super())
        print(super(Cat, self))
        super().shout()
        super(Cat,self).shout()   # 等價于super().shout()
        self.__class__.__base__.shout(self)  #不推薦使用
 
a = Animal()
a.shout()       #   Animal shouts
b  = Cat()
b.shout()       #   super():    super: class 'Cat'>, Cat object>>
                #   super: class 'Cat'>, Cat object>>
                #   Animal shouts
                #   Animal shouts
                #   Animal shouts
print(a.__dict__)       #   {}
print(b.__dict__)       #   {}
print(Animal.__dict__)  #   {'__module__': '__main__', 'shout': function Animal.shout at 0x019AC228>, '__dict__': attribute '__dict__' of 'Animal' objects>, '__weakref__': attribute '__weakref__' of 'Animal' objects>, '__doc__': None}
print(Cat.__dict__)     #   {'__module__': '__main__', 'shout': function Cat.shout at 0x019F6150>, '__doc__': None}
 

super(Cat,self).shout()的作用相當于

  • 調(diào)用,當前b的實例中找cat類基類中,shout的方法

那對于類方法和靜態(tài)方法是否也同樣適用尼?

class Animal:
    @classmethod
    def class_method(cls):
        print("class_method")
 
    @staticmethod
    def static_method():
        print("static_methond_animal")
 
class Cat(Animal):
    @classmethod
    def class_method(cls):
        super().class_method()  #   class_method
        print("class_method_cat")
 
    @staticmethod
    def static_method(cls,self):
        super(Cat,self).static_method()
        print("static_method_cat")
 
b = Cat()
b.class_method()    #   class_method
                    #   class_method_cat
b.static_method(Cat,b)
                    #   static_methond_animal
                    #   static_method_cat

這些方法都可以覆蓋,原理都一樣,屬性字典的搜索順序

五、繼承中的初始化

看以下一段代碼,有沒有問題

class A:
    def __init__(self,a):
        self.a = a
 
class B(A):
    def __init__(self,b,c):
        self.b = b
        self.c = c
 
    def printv(self):
        print(self.b)
        print(self.a)
 
a = B(100,300)
print(a.__dict__)       #   {'b': 100, 'c': 300}
print(a.__class__.__bases__)    #   (class '__main__.A'>,)
a.printv()      #   100
                #   AttributeError: 'B' object has no attribute 'a'

上例代碼

  • 如果B類定義時聲明繼承自類A,則在B類中__bases__中是可以看到類A
  • 這和是否調(diào)用類A的構(gòu)造方法是兩回事
  • 如果B中調(diào)用了A的構(gòu)造方法,就可以擁有父類的屬性了,如果理解這一句話?
class A:
    def __init__(self,a):
        self.a = a
 
class B(A):
    def __init__(self,b,c):
        super().__init__(b+c)
        # A.__init__(self,b+c)
        self.b = b
        self.c = c
 
    def printv(self):
        print(self.b)
        print(self.a)
 
a = B(100,300)
print(a.__dict__)       #   {'a': 400, 'b': 100, 'c': 300}
print(a.__class__.__bases__)    #   (class '__main__.A'>,)
a.printv()      #   100
                #   400

作為好的習慣,如果父類定義了__init__方法,你就改在子類__init__中調(diào)用它【建議適用super()方法調(diào)用】

那子類什么時候自動調(diào)用父類的【__init__】方法?

例子一:【B實例的初始化會自動調(diào)用基類A的__init__方法】

class A:
    def __init__(self):
        self.a1 = "a1"
        self.__a2 = "a2"
        print("A init")
 
class B(A):
    pass
 
b = B()     #   A init
print(b.__dict__)   #   {'a1': 'a1', '_A__a2': 'a2'}

例子二:【B實例的初始化__init__方法不會自動調(diào)用父類的初始化__init__方法,需要手動調(diào)用】

class A:
    def __init__(self):
        self.a1 = "a1"
        self.__a2 = "a2"
        print("A init")
 
class B(A):
    def __init__(self):
        self.b1 = "b1"
        self.__b2 = "b2"
        print("b init")
        #A.__init__(self)
 
b = B()     #   b init
print(b.__dict__)   #   {'b1': 'b1', '_B__b2': 'b2'}

那如何正確實例化?

  • 注意,調(diào)用父類的__init__方法,出現(xiàn)在不同的位置,可能導致出現(xiàn)不同的結(jié)果
class Animal:
    def __init__(self,age):
        print("Animal init")
        self.age = age
 
    def show(self):
        print(self.age)
 
class Cat(Animal):
    def __init__(self,age,weight):
        #調(diào)用父類的__init__方法的順序 決定show方法的結(jié)果
        super(Cat, self).__init__(age)
        print("Cat init")
        self.age = age + 1
        self.weight = weight
 
a = Cat(10,5)
a.show()        #   Animal init
                #   Cat init
                #   11

怎么直接將上例中所有的實例屬性改變?yōu)樗接袑傩裕?/p>

  • 解決辦法,一個原則,自己的私有屬性,就該自己的方法讀取和修改,不要借助其他類的方法,即父類或者派生類
class Animal:
    def __init__(self,age):
        print("Animal init")
        self.__age = age
 
    def show(self):
        print(self.__age)
 
class Cat(Animal):
    def __init__(self,age,weight):
        #調(diào)用父類的__init__方法的順序 決定show方法的結(jié)果
        super(Cat, self).__init__(age)
        print("Cat init")
        self.__age = age + 1
        self.__weight = weight
 
    def show(self):
        print(self.__age)
 
a = Cat(10,5)
a.show()        #   Animal init
                #   Cat init
                #   11
print(a.__dict__)   #   {'_Animal__age': 10, '_Cat__age': 11, '_Cat__weight': 5}

到此這篇關(guān)于淺談Python類的單繼承相關(guān)知識的文章就介紹到這了,更多相關(guān)Python類的單繼承內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

您可能感興趣的文章:
  • 詳細總結(jié)Python類的多繼承知識
  • python類的繼承鏈實例分析
  • python子類如何繼承父類的實例變量
  • Python類成員繼承重寫的實現(xiàn)
  • Python類繼承和多態(tài)原理解析
  • Python 繼承,重寫,super()調(diào)用父類方法操作示例
  • python3中類的繼承以及self和super的區(qū)別詳解
  • Python3.5面向?qū)ο蟪绦蛟O計之類的繼承和多態(tài)詳解
  • Python面向?qū)ο蟪绦蛟O計類的封裝與繼承用法示例
  • Python基礎知識學習之類的繼承

標簽:常德 黔西 黑龍江 益陽 鷹潭 上海 惠州 四川

巨人網(wǎng)絡通訊聲明:本文標題《淺談Python類的單繼承相關(guān)知識》,本文關(guān)鍵詞  淺談,Python,類,的,單繼承,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡,涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《淺談Python類的單繼承相關(guān)知識》相關(guān)的同類信息!
  • 本頁收集關(guān)于淺談Python類的單繼承相關(guān)知識的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    国产欧美精品一区二区三区四区| 日韩欧美亚洲国产| 亚洲性受xxx喷奶水| 九九热在线观看| 欧美视频在线视频精品| 国产女主播在线一区二区| 亚洲aa中文字幕| 国内精品久久久久久久久电影网| 亚洲三级中文字幕| 国产精品免费视频一区二区| 精品乱码一区二区三区| 成人免费在线观看网站| 欧美黑人乱大交ⅹxxxxx| 91网上在线视频| 日韩欧美在线第一页| 娇小的粉嫩xxx极品| 涩涩视频在线免费看| 国产jzjzjz丝袜老师水多| 成人小视频免费在线观看| 国产91露脸中文字幕在线| 中文字幕欧美日韩在线不卡| 日本乱码高清不卡字幕| 男插女视频网站| 欧美a免费在线| 精品毛片在线观看| 中文字幕伦理片| 天堂网在线观看在线观看精品| 国产在线第一页| 亚洲免费观看高清完整| 在线国产伦理一区| 99日在线视频| 精品一区二区在线免费观看| 久久国产波多野结衣| 成人h动漫免费观看网站| 日韩免费成人网| 在线看污网站| 国内外成人在线视频| 日日摸夜夜添夜夜添亚洲女人| 人人鲁人人莫人人爱精品| 国产一级一级国产| 丁香花高清在线观看完整版| 国产一区二区三区成人| 老牛影视免费一区二区| h短视频大全在线观看| 亚洲日本精品一区| 99re热这里只有精品免费视频| 精品在线观看免费| 视频一区日韩| 你懂的视频网站| 成人午夜激情片| 夜夜爽99久久国产综合精品女不卡| 97在线观看免费视频| 成人高清在线观看| 亚洲老司机av| 亚洲区自拍偷拍| 国产绿帽一区二区三区| 亚洲超丰满肉感bbw| 污视频网站在线免费| 成人免费黄色网址| 欧美电影在线观看网站| 免费黄在线观看| 欧美成人dvd在线视频| 日韩在线视频一区二区三区| 成人短视频软件网站大全app| 成人黄色一级视频| 久久国产精品 国产精品| 一区二区三区精品视频在线| 久草在线中文888| 2019av中文字幕| 免费在线看大片无需流量| 一区二区三区自拍| 欧美久色视频| 女~淫辱の触手3d动漫| 久久久久久18| 国产精品人人爽人人做我的可爱| 日韩午夜在线视频| 奇米网一区二区| 欧美在线免费看| 亚洲**2019国产| 日韩国产精品毛片| 精品一区二区三区香蕉蜜桃| 97视频精彩视频在线观看| 成人春色在线观看免费网站| 99九九99九九九99九他书对| 亚洲精品一二区| 精品成人在线观看| 国产精品流白浆视频| 国内精品国产三级国产a久久| 亚洲欧洲日产国产网站| 波多野结衣二区三区| 日韩在线视频免费播放| 天堂av免费观看| 毛片视频免费观看| 国产一线二线在线观看| 亚洲国产aⅴ天堂久久| 国产激情小视频在线| 秋霞av亚洲一区二区三| 国内在线免费高清视频| 国产精品30p| 国产美女被遭强高潮免费网站| 国产九九在线观看| 欧美日韩一区二区三区在线看| 久久av资源网| 91伦理视频在线观看| 久久久久99精品国产片| 亚洲第一av网| av伊人久久| 精品无码久久久久久久| 一区二区日韩视频| 欧美日中文字幕| 国内外成人免费激情在线视频| 欧美成熟视频| 狠狠综合久久av一区二区老牛| 国产精品丝袜高跟| yw在线观看| 国产三级漂亮女教师| 久久久久久久久久久一区| 日韩不卡免费视频| 欧美精品啪啪| 一区二区三区欧洲区| 国产亚洲一区二区在线| 国产一区成人| 中文字幕一区二区三区日韩精品| 国产色无码精品视频国产| 好色先生视频污| 久久天天综合| 91麻豆产精品久久久久久夏晴子| 国产自摸综合网| 久久精品视频一区二区三区| 加勒比av中文字幕| 久久国产精品久久精品| 精品福利在线看| 亚洲国产成人久久综合| 91视视频在线观看入口直接观看www| 中文字幕无线精品亚洲乱码一区| 九九九九精品| 97精品国产97久久久久久| 婷婷国产成人久久精品激情| av一区二区三区在线| 日韩专区在线播放| 91麻豆福利精品推荐| 美女精品网站| 精品国产免费人成电影在线观...| 精品国产视频在线| 日本韩国一区二区三区| 久久成人精品| 韩国成人在线视频| 国产亚洲综合性久久久影院| 欧美日韩在线另类| 欧美片第1页| 成人午夜电影小说| 欧美在线www| 久久精品男人的天堂| 成人h视频在线观看| 激情欧美日韩一区| 久久激情婷婷| 日韩在线观看视频网站| 懂色av.com| 国产欧美日韩精品一区二区三区| 亚洲护士老师的毛茸茸最新章节| 自拍av一区二区三区| 中文字幕在线亚洲三区| 一级黄色片在线看| 久久国产精品久久精品国产| 欧美成人精品三级网站| www毛片com| 在线电影欧美日韩一区二区私密| 欧美精品一区二区三区在线四季| 中文字幕在线视频第一页| 一区二区三区四区五区在线| 麻豆精品免费视频| 欧美精品亚洲精品日韩精品| 日本一二区视频| 国产综合动作在线观看| 国产精品一区二区三区免费观看| 日本高清久久天堂| 97福利网站在线观看视频| 国产精品私房写真福利视频| 日日爱66.cn| 久久蜜桃一区二区| 91手机视频在线| 日韩一区二区视频| 久久电影网电视剧免费观看| 三上亚洲一区二区| 国产乱国产乱老熟| 秋霞午夜鲁丝一区二区老狼| 精品一区二区三区五区六区七区| 欧美高清在线视频| 性日韩欧美在线视频| 欧美日韩国产综合一区二区| 欧美性bbwbbwbbwhd| 一二三四国产精品| 啊v视频在线一区二区三区| 日韩精品视频中文字幕| 麻豆精品视频在线| 四虎影视精品成人| 天堂精品中文字幕在线| 国产超碰人人模人人爽人人添| 少妇性l交大片| 日本高清黄色片| 无遮挡亚洲一区| 午夜精品一区二区三级视频| 欧美在线观看视频| 国产精品久久久久久一区二区| 亚洲欧洲午夜一线一品| jizzjizz免费| 好吊色视频988gao在线观看| 久久久人成影片一区二区三区在哪下载| 深夜免费福利视频| 美女洗澡无遮挡| 日韩成人在线观看| 精品毛片乱码1区2区3区| 国产a级片免费看| 精品一区不卡| 欧美激情一区二区| 亚洲无码精品在线播放| 亚洲日韩欧美视频一区| 亚洲综合色丁香婷婷六月图片| 免费成人高清视频| 超碰最新在线| 成人免费短视频| bdsm精品捆绑chinese女| 色婷婷香蕉在线一区二区| 国产小视频一区| 久久九九国产精品| 成人一级黄色大片| 动漫精品一区二区| 麻豆视频观看网址久久| 国产精品全国免费观看高清| 国产亚洲欧美日韩日本| 日韩一级视频在线观看| 国产精品96久久久久久又黄又硬| 成人欧美magnet| 国产精品福利视频一区二区三区| 国产三级国产精品国产专区50| 久久这里只有精品视频网| 国产欧美一级片| 日本黄大片一区二区三区| 在线视频欧美日韩| 日本一区二区三区视频免费看| 综合亚洲深深色噜噜狠狠网站| 中文字幕日韩欧美一区二区三区| 美洲精品一卡2卡三卡4卡四卡| 欧美日韩亚洲综合在线 欧美亚洲特黄一级| 日韩午夜免费视频| 神马电影网我不卡| 亚洲高清视频一区| 亚洲网站在线看| 久久本道综合色狠狠五月| 欧美精品系列| 红杏视频成人| av动漫精品一区二区| 欧美偷拍第一页| 国产亚洲一区二区三区在线观看| 午夜久久电影网| 日本一区二区在线不卡| 免费色片视频| 日韩福利小视频| 99久久免费国产精品| 番号在线播放| 久久激情av| 成人在线免费观看视视频| 欧美国产精品v| 亚洲欧美文学| 国产一级二级三级在线观看| 亚洲一级免费在线观看| 亚洲精品一区二区三区在线| 精品久久久久久久久久久久包黑料| 先锋影音男人资源网| 大杳蕉精品视频在线观看| 国产xxxxhd| 久热精品在线观看| a级黄色免费视频| 91三级在线| 综合一区在线| 日韩中文字幕av电影| 日韩欧美成人一区二区| 国产男女无套在线播放| 波多野结衣mp4| 日本一级理论片在线大全| 一级精品视频在线观看宜春院| 国产三级国产精品| 日韩电影天堂视频一区二区| 一本久久精品| 日韩系列在线| 国产精品视频久久久久久| 久久综合国产精品| 亚洲精品久久久久久宅男| 一级特黄a大片免费| 亚洲精品一区二区三区在线观看| 黄色片视频在线| 国产视频一区免费看| 男人舔女人下面高潮视频| 国产三区二区一区久久| 婷婷激情四射网| a级在线观看| 亚洲欧洲视频在线观看| 精品在线观看免费| 日韩精品一区二区久久| 欧美日韩性生活片| 欧美熟妇另类久久久久久多毛| 亚洲男人的天堂一区二区| 自拍偷拍亚洲视频| av资源免费观看| 国内自拍视频在线看免费观看| 一区二区三区四区不卡在线| 日韩国产一区二区三区| 亚洲欧美日韩小说| 在线能看的av网站| 一色屋精品亚洲香蕉网站| 亚洲一区二区福利视频| 精品一区二区三区视频在线播放| 亚洲成人在线观看视频| 欧美日韩一区二区区| 丰满爆乳一区二区三区| 999精品视频| free性丰满69性欧美| 一区二区三区中文字幕在线观看| 欧美成人乱码一二三四区免费| 国产精品视频1区| 精品毛片一区二区三区| 波多野结衣精品久久| 亚洲一区二区av电影| wwwwxxxx日本| 免费观看a级片| 久久精品视频9| 91精品久久香蕉国产线看观看| 麻豆精品在线观看|