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

Python中關(guān)于面向?qū)ο笾欣^承的詳細(xì)講解

 更新時間:2021年10月08日 14:52:26   作者:測試領(lǐng)頭羊  
面向?qū)ο缶幊?(OOP) 語言的一個主要功能就是“繼承”。繼承是指這樣一種能力:它可以使用現(xiàn)有類的所有功能,并在無需重新編寫原來的類的情況下對這些功能進行擴展

1.繼承

在程序中,繼承描述的是多個類之間的所屬關(guān)系。

如果一個類A里面的屬性和方法可以復(fù)用,則可以通過繼承的方式,傳遞到類B里。
那么類A就是基類,也叫做父類;類B就是派生類,也叫做子類。

案例:

# 父類
class A(object):
    def __init__(self):
        self.num=50
    def print_num(self):
        print(self.num+100)
# 子類
class B(A):
    pass
b=B()
print(b.num)
b.print_num()

在這里插入圖片描述

2.單繼承

子類只繼承一個父類

案例:

# 父類
class A(object):
    def __init__(self):
        self.car='20款奔馳'
    def print_car(self):
        print('老款%s'%self.car)
# 子類
class B(A):
    pass

a=A()
print(a.car)
a.print_car()

b=B()
print(b.car)
b.print_car()

在這里插入圖片描述

子類在繼承的時候,在定義類時,小括號()中為父類的名字
父類的屬性、方法,會被繼承給子類

3.多繼承

子類繼承多個父類

案例1:

# 父類
class A(object):
    def __init__(self):
        self.car='20款奔馳'
    def print_car(self):
        print('老款%s'%self.car)
    def lao_car(self):
        print('20的大奔')

class B(object):
    def __init__(self):
        self.car='21款背馳'
    def print_car(self):
        print('新款%s'%self.car)
    def xin_car(self):
        print('21的大奔')
# 子類
class C(A,B):
    pass

c=C()
print(c.car)
c.print_car()
c.lao_car()
c.xin_car()

在這里插入圖片描述

案例2:

# 父類
class A(object):
    def __init__(self):
        self.car='20款奔馳'
    def print_car(self):
        print('老款%s'%self.car)
    def lao_car(self):
        print('20的大奔')
class B(object):
    def __init__(self):
        self.car='21款背馳'
    def print_car(self):
        print('新款%s'%self.car)
    def xin_car(self):
        print('21的大奔')
# 子類
class C(B,A):
    pass
c=C()
print(c.car) # 執(zhí)行B的屬性
c.print_car() # 執(zhí)行B的方法
print(C.__mro__) # 子類的魔法屬性__mro__決定了屬性和方法的查找順序
c.lao_car() # 不重名不受影響
c.xin_car()

在這里插入圖片描述

多繼承可以繼承多個父類,也繼承了所有父類的屬性和方法
注意:如果多個父類中有同名的 屬性和方法,則默認(rèn)使用第一個父類的屬性和方法(根據(jù)類的魔法屬性mro的順序來查找)
多個父類中,不重名的屬性和方法,不會有任何影響。

4.子類重寫父類的同名屬性和方法

案例:

# 父類
class A(object):
    def __init__(self):
        self.car='20款奔馳'
    def print_car(self):
        print('老款%s'%self.car)

class B(object):
    def __init__(self):
        self.car='21款背馳'
    def print_car(self):
        print('新款%s'%self.car)
# 子類
class C(B,A):
    def __init__(self):
        self.car='22款奔馳'
    def print_car(self):
        print('最新款%s'%self.car)
c=C()
print(c.car) # 執(zhí)行B的屬性
c.print_car() # 執(zhí)行B的方法
print(C.__mro__) # 子類的魔法屬性__mro__決定了屬性和方法的查找順序

在這里插入圖片描述

5.子類調(diào)用父類同名屬性和方法

案例:

# 父類
class A(object):
    def __init__(self):
        self.car='20款奔馳'
    def print_car(self):
        print('老款%s'%self.car)

class B(object):
    def __init__(self):
        self.car='21款背馳'
    def print_car(self):
        print('新款%s'%self.car)
# 子類
class C(B,A):
    def __init__(self):
        self.car='22款奔馳'
    def print_car(self):
        print('執(zhí)行子類的__init__方法前,self.car的屬性:%s'%self.car)
        self.__init__() # 執(zhí)行本類的__init__方法,屬性初始化
        print('執(zhí)行子類的__init__方法前,self.car的屬性:%s' % self.car)
        print('最新款%s'%self.car)
    def print_lao_car(self):
        print('執(zhí)行A的__init__方法前,self.car的屬性:%s' % self.car)
        A.__init__(self)  # 執(zhí)行本類的__init__方法,屬性初始化
        print('執(zhí)行A的__init__方法前,self.car的屬性:%s' % self.car)
        A.print_car(self)
    def print_xin_car(self):
        print('執(zhí)行B的__init__方法前,self.car的屬性:%s' % self.car)
        B.__init__(self)  # 執(zhí)行本類的__init__方法,屬性初始化
        print('執(zhí)行B的__init__方法前,self.car的屬性:%s' % self.car)
        B.print_car(self)

c=C()
c.print_car()
print('*'*10)
c.print_lao_car()
print('*'*10)
c.print_xin_car()
print('*'*10)
c.print_car()

在這里插入圖片描述

在這里插入圖片描述

6.多層繼承

class A(object):
    def __init__(self):
        self.car='20款奔馳'
    def print_car(self):
        print('老款%s'%self.car)
class B(object):
    def __init__(self):
        self.car='21款奔馳'
    def print_car(self):
        print('新款%s'%self.car)
class C(B,A):
    def __init__(self):
        self.car='22款奔馳'
        self.money=40
    def print_car(self):
        self.__init__()
        print('最新款%s'%self.car)
    def print_lao_car(self):
        A.__init__(self)  # 執(zhí)行A類的__init__方法,屬性初始化
        A.print_car(self)
    def print_xin_car(self):
        B.__init__(self)  # 執(zhí)行B類的__init__方法,屬性初始化
        B.print_car(self)
class D(C): # 多層繼承
    pass
d=D()
d.print_car()
d.print_lao_car()
d.print_xin_car()

在這里插入圖片描述

在這里插入圖片描述

7.調(diào)用父類方法super()

案例:

class Animal(object):
    def play(self):
        print('動物就是玩')
class Dog(Animal):
    def play(self):
        super().play()
        print('狗改不了吃屎')
d=Dog()
d.play()

在這里插入圖片描述

8.案例

class Gupiao(object):
    def xinqing(self):
        print('股票買入和賣出')

class Gongmu(Gupiao):
    def lianghua(self):
        super().xinqing()
        print('公募機構(gòu)買入和賣出')

class Simu(Gupiao):
    def lianghua(self):
        Gupiao.__init__(self)
        Gupiao.xinqing(self)
        print('私募機構(gòu)買入和賣出')

    def xinqing(self):
        print('專研自己的輸出股票和私募買入和賣出')

g=Gongmu()
g.lianghua()
print('*'*10)
s=Simu()
s.lianghua()
s.xinqing()

在這里插入圖片描述

到此這篇關(guān)于Python中關(guān)于面向?qū)ο笾欣^承的詳細(xì)講解的文章就介紹到這了,更多相關(guān)Python 面向?qū)ο?繼承內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 關(guān)于對python中進程的幾個概念理解

    關(guān)于對python中進程的幾個概念理解

    進程由程序,數(shù)據(jù)和進程控制塊組成,是正在執(zhí)行的程,程序的一次執(zhí)行過程,是資源調(diào)度的基本單位,下面這篇文章主要給大家介紹了關(guān)于對python中進程的幾個概念理解,需要的朋友可以參考下
    2021-10-10
  • Python常用擴展插件使用教程解析

    Python常用擴展插件使用教程解析

    這篇文章主要介紹了Python常用擴展插件使用教程解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-11-11
  • 定位python內(nèi)存泄漏問題及解決

    定位python內(nèi)存泄漏問題及解決

    這篇文章主要介紹了定位python內(nèi)存泄漏問題及解決方案,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-11-11
  • django配置連接數(shù)據(jù)庫及原生sql語句的使用方法

    django配置連接數(shù)據(jù)庫及原生sql語句的使用方法

    這篇文章主要給大家介紹了關(guān)于django配置連接數(shù)據(jù)庫,以及原生sql語句的使用方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-03-03
  • python中浮點數(shù)比較判斷!為什么不能用==(推薦)

    python中浮點數(shù)比較判斷!為什么不能用==(推薦)

    這篇文章主要介紹了python中浮點數(shù)比較判斷!為什么不能用==,本文給大家分享問題解決方法,需要的朋友可以參考下
    2023-09-09
  • Python轉(zhuǎn)換HTML到Text純文本的方法

    Python轉(zhuǎn)換HTML到Text純文本的方法

    這篇文章主要介紹了Python轉(zhuǎn)換HTML到Text純文本的方法,分析了常用的兩種方法,非常具有實用價值,需要的朋友可以參考下
    2015-01-01
  • python將字符串以utf-8格式保存在txt文件中的方法

    python將字符串以utf-8格式保存在txt文件中的方法

    今天小編就為大家分享一篇python將字符串以utf-8格式保存在txt文件中的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-10-10
  • python?包之?re?正則匹配教程分享

    python?包之?re?正則匹配教程分享

    這篇文章主要介紹了python?包之?re?正則匹配教程分享,文章基于python?包?re的相關(guān)資料展開貴主題的詳細(xì)介紹,需要的小伙伴可以參考一下
    2022-04-04
  • 詳解python常用命令行選項與環(huán)境變量

    詳解python常用命令行選項與環(huán)境變量

    這篇文章主要介紹了python常用命令行選項與環(huán)境變量,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-02-02
  • pycharm 使用心得(二)設(shè)置字體大小

    pycharm 使用心得(二)設(shè)置字體大小

    pycharm 是很好的一個IDE,在windows下,和macOS下,都能很好的運行。唯一缺點是啟動慢。默認(rèn)字體太小,在mac下,需要瞪大24K氪金狗眼才能看清。 為了保護好眼睛,我們需要把字體調(diào)整大一些:
    2014-06-06

最新評論

维西| 铜山县| 江川县| 修武县| 沁阳市| 荥经县| 麻城市| 乌拉特中旗| 公安县| 沙河市| 湛江市| 德兴市| 石柱| 千阳县| 南通市| 城固县| 高安市| 军事| 全南县| 江陵县| 合水县| 东乌珠穆沁旗| 漯河市| 蓬溪县| 台东市| 上高县| 富宁县| 陇川县| 蒲城县| 定边县| 巴里| 翁源县| 邹平县| 临颍县| 松江区| 邓州市| 吉林市| 莫力| 那曲县| 南昌市| 孝义市|