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

python面向?qū)ο笾惖睦^承詳解

 更新時(shí)間:2021年08月19日 16:45:53   作者:Bigberg  
這篇文章主要介紹了python面向?qū)ο笾惖睦^承詳解,通過概述定義講解了類的繼承的功能和創(chuàng)建方式,寫出了代碼實(shí)例供參考,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下

一、概述 

面向?qū)ο缶幊?(OOP) 語言的一個(gè)主要功能就是“繼承”。繼承是指這樣一種能力:它可以使用現(xiàn)有類的所有功能,并在無需重新編寫原來的類的情況下對(duì)這些功能進(jìn)行擴(kuò)展。

通過繼承創(chuàng)建的新類稱為“子類”或“派生類”,被繼承的類稱為“基類”、“父類”或“超類”,繼承的過程,就是從一般到特殊的過程。在某些 OOP 語言中,一個(gè)子類可以繼承多個(gè)基類。但是一般情況下,一個(gè)子類只能有一個(gè)基類,要實(shí)現(xiàn)多重繼承,可以通過多級(jí)繼承來實(shí)現(xiàn)。

繼承概念的實(shí)現(xiàn)方式主要有2類:實(shí)現(xiàn)繼承、接口繼承。

實(shí)現(xiàn)繼承是指使用基類的屬性和方法而無需額外編碼的能力。接口繼承是指僅使用屬性和方法的名稱、但是子類必須提供實(shí)現(xiàn)的能力(子類重構(gòu)爹類方法)。

在考慮使用繼承時(shí),有一點(diǎn)需要注意,那就是兩個(gè)類之間的關(guān)系應(yīng)該是“屬于”關(guān)系。例如,Employee 是一個(gè)人,Manager 也是一個(gè)人,因此這兩個(gè)類都可以繼承 Person 類。但是 Leg 類卻不能繼承 Person 類,因?yàn)橥炔⒉皇且粋€(gè)人。

OO開發(fā)范式大致為:劃分對(duì)象→抽象類→將類組織成為層次化結(jié)構(gòu)(繼承和合成) →用類與實(shí)例進(jìn)行設(shè)計(jì)和實(shí)現(xiàn)幾個(gè)階段。

二、類的繼承

2.1 繼承的定義

class Person(object):   # 定義一個(gè)父類
 
    def talk(self):    # 父類中的方法
        print("person is talking....")  
 
 
class Chinese(Person):    # 定義一個(gè)子類, 繼承Person類
 
    def walk(self):      # 在子類中定義其自身的方法
        print('is walking...')
 
c = Chinese()
c.talk()      # 調(diào)用繼承的Person類的方法
c.walk()     # 調(diào)用本身的方法
 
# 輸出
 
person is talking....
is walking...

2.2 構(gòu)造函數(shù)的繼承 

  如果我們要給實(shí)例 c 傳參,我們就要使用到構(gòu)造函數(shù),那么構(gòu)造函數(shù)該如何繼承,同時(shí)子類中又如何定義自己的屬性?

繼承類的構(gòu)造方法:

       1.經(jīng)典類的寫法: 父類名稱.__init__(self,參數(shù)1,參數(shù)2,...)

       2. 新式類的寫法:super(子類,self).__init__(參數(shù)1,參數(shù)2,....)

class Person(object):
 
    def __init__(self, name, age):
        self.name = name
        self.age = age
        self.weight = 'weight'
 
    def talk(self):
        print("person is talking....")
 
 
class Chinese(Person):
 
    def __init__(self, name, age, language):  # 先繼承,在重構(gòu)
        Person.__init__(self, name, age)  #繼承父類的構(gòu)造方法,也可以寫成:super(Chinese,self).__init__(name,age)
        self.language = language    # 定義類的本身屬性
 
    def walk(self):
        print('is walking...')
 
 
class American(Person):
    pass
 
c = Chinese('bigberg', 22, 'Chinese')

  如果我們只是簡單的在子類Chinese中定義一個(gè)構(gòu)造函數(shù),其實(shí)就是在重構(gòu)。這樣子類就不能繼承父類的屬性了。所以我們在定義子類的構(gòu)造函數(shù)時(shí),要先繼承再構(gòu)造,這樣我們也能獲取父類的屬性了。

子類構(gòu)造函數(shù)基礎(chǔ)父類構(gòu)造函數(shù)過程如下:

實(shí)例化對(duì)象c ----> c 調(diào)用子類__init__() ---- > 子類__init__()繼承父類__init__() ----- > 調(diào)用父類__init__()

2.3 子類對(duì)父類方法的重寫

  如果我們對(duì)基類/父類的方法需要修改,可以在子類中重構(gòu)該方法。如下的talk()方法

class Person(object):
 
    def __init__(self, name, age):
        self.name = name
        self.age = age
        self.weight = 'weight'
 
    def talk(self):
        print("person is talking....")
 
class Chinese(Person):
 
    def __init__(self, name, age, language): 
        Person.__init__(self, name, age) 
        self.language = language
        print(self.name, self.age, self.weight, self.language)
 
    def talk(self):  # 子類 重構(gòu)方法
        print('%s is speaking chinese' % self.name)
 
    def walk(self):
        print('is walking...')
 
c = Chinese('bigberg', 22, 'Chinese')
c.talk()
 
# 輸出
bigberg 22 weight Chinese
bigberg is speaking chinese

三、類繼承的事例

class SchoolMember(object):
    '''學(xué)習(xí)成員基類'''
    member = 0
 
    def __init__(self, name, age, sex):
        self.name = name
        self.age = age
        self.sex = sex
        self.enroll()
 
    def enroll(self):
        '注冊'
        print('just enrolled a new school member [%s].' % self.name)
        SchoolMember.member += 1
 
    def tell(self):
        print('----%s----' % self.name)
        for k, v in self.__dict__.items():
            print(k, v)
        print('----end-----')
 
    def __del__(self):
        print('開除了[%s]' % self.name)
        SchoolMember.member -= 1
 
 
class Teacher(SchoolMember):
    '教師'
    def __init__(self, name, age, sex, salary, course):
        SchoolMember.__init__(self, name, age, sex)
        self.salary = salary
        self.course = course
 
    def teaching(self):
        print('Teacher [%s] is teaching [%s]' % (self.name, self.course))
 
 
class Student(SchoolMember):
    '學(xué)生'
 
    def __init__(self, name, age, sex, course, tuition):
        SchoolMember.__init__(self, name, age, sex)
        self.course = course
        self.tuition = tuition
        self.amount = 0
 
    def pay_tuition(self, amount):
        print('student [%s] has just paied [%s]' % (self.name, amount))
        self.amount += amount
 
t1 = Teacher('Wusir', 28, 'M', 3000, 'python')
t1.tell()
s1 = Student('haitao', 38, 'M', 'python', 30000)
s1.tell()
s2 = Student('lichuang', 12, 'M', 'python', 11000)
print(SchoolMember.member)
del s2
 
print(SchoolMember.member)
 
 
 
# 輸出
----end-----
just enrolled a new school member [haitao].
----haitao----
age 38
sex M
name haitao
amount 0
course python
tuition 30000
----end-----
just enrolled a new school member [lichuang].
3
開除了[lichuang]
2
開除了[Wusir]
開除了[haitao]

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

相關(guān)文章

  • 基于PyQt4和PySide實(shí)現(xiàn)輸入對(duì)話框效果

    基于PyQt4和PySide實(shí)現(xiàn)輸入對(duì)話框效果

    這篇文章主要為大家詳細(xì)介紹了基于PyQt4和PySide實(shí)現(xiàn)輸入對(duì)話框效果,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-02-02
  • ruff check文件目錄檢測--exclude參數(shù)設(shè)置路徑詳解

    ruff check文件目錄檢測--exclude參數(shù)設(shè)置路徑詳解

    這篇文章主要為大家介紹了ruff check文件目錄檢測exclude參數(shù)如何設(shè)置多少路徑詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-10-10
  • python獲取網(wǎng)頁狀態(tài)碼示例

    python獲取網(wǎng)頁狀態(tài)碼示例

    這篇文章主要介紹了python獲取網(wǎng)頁狀態(tài)碼示例,只需要2行代碼就可實(shí)現(xiàn)想要的功能,需要的朋友可以參考下
    2014-03-03
  • Python畫柱狀統(tǒng)計(jì)圖操作示例【基于matplotlib庫】

    Python畫柱狀統(tǒng)計(jì)圖操作示例【基于matplotlib庫】

    這篇文章主要介紹了Python畫柱狀統(tǒng)計(jì)圖操作,結(jié)合實(shí)例形式分析了Python基于matplotlib庫實(shí)現(xiàn)圖形繪制的相關(guān)操作技巧,需要的朋友可以參考下
    2018-07-07
  • Python+wxPython實(shí)現(xiàn)自動(dòng)生成PPTX文檔程序

    Python+wxPython實(shí)現(xiàn)自動(dòng)生成PPTX文檔程序

    這篇文章主要介紹了如何使用 wxPython 模塊和 python-pptx 模塊來編寫一個(gè)程序,用于生成包含首頁、內(nèi)容頁和感謝頁的 PPTX 文檔,感興趣的小伙伴可以學(xué)習(xí)一下
    2023-08-08
  • 如何將PySpark導(dǎo)入Python的放實(shí)現(xiàn)(2種)

    如何將PySpark導(dǎo)入Python的放實(shí)現(xiàn)(2種)

    這篇文章主要介紹了如何將PySpark導(dǎo)入Python的放實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-04-04
  • python3使用matplotlib繪制條形圖

    python3使用matplotlib繪制條形圖

    這篇文章主要為大家詳細(xì)介紹了python3使用matplotlib繪制條形圖,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-03-03
  • 在Python的列表中利用remove()方法刪除元素的教程

    在Python的列表中利用remove()方法刪除元素的教程

    這篇文章主要介紹了在Python的列表中利用remove()方法刪除元素的教程,是Python入門中的基礎(chǔ)知識(shí),注意其和pop()方法的區(qū)別,需要的朋友可以參考下
    2015-05-05
  • 如何利用python實(shí)現(xiàn)詞頻統(tǒng)計(jì)功能

    如何利用python實(shí)現(xiàn)詞頻統(tǒng)計(jì)功能

    詞頻統(tǒng)計(jì)用途很廣泛,比如我們統(tǒng)計(jì)某篇文章中的用詞頻率,網(wǎng)絡(luò)熱點(diǎn)詞匯,再比如起名排行榜呀、熱門旅游景點(diǎn)排行榜呀什么的,其實(shí)也都可以套用,這篇文章主要給大家介紹了關(guān)于如何利用python實(shí)現(xiàn)詞頻統(tǒng)計(jì)功能的相關(guān)資料,需要的朋友可以參考下
    2021-10-10
  • Python使用進(jìn)程池并發(fā)執(zhí)行SQL語句的操作代碼

    Python使用進(jìn)程池并發(fā)執(zhí)行SQL語句的操作代碼

    Python的進(jìn)程池是一種并發(fā)工具,它允許我們將任務(wù)分發(fā)給一組工作進(jìn)程,這些進(jìn)程可以同時(shí)運(yùn)行并共享一個(gè)進(jìn)程池,本文給大家介紹了Python使用進(jìn)程池并發(fā)執(zhí)行SQL語句的操作代碼,需要的朋友可以參考下
    2024-10-10

最新評(píng)論

安新县| 巍山| 辉县市| 永胜县| 安康市| 五莲县| 枣强县| 都昌县| 垫江县| 伊通| 鄂托克旗| 临安市| 皋兰县| 什邡市| 道孚县| 蕲春县| 台州市| 丹东市| 工布江达县| 安龙县| 望都县| 上林县| 宜兴市| 临沧市| 平阳县| 石河子市| 当阳市| 崇明县| 佛学| 遵义县| 惠州市| 曲麻莱县| 中江县| 互助| 云阳县| 花莲县| 烟台市| 城口县| 莎车县| 余江县| 平阴县|