python繼承功能是什么

本篇內(nèi)容介紹了“python繼承功能是什么”的有關(guān)知識(shí),在實(shí)際案例的操作過(guò)程中,不少人都會(huì)遇到這樣的困境,接下來(lái)就讓小編帶領(lǐng)大家學(xué)習(xí)一下如何處理這些情況吧!希望大家仔細(xì)閱讀,能夠?qū)W有所成!

網(wǎng)站建設(shè)哪家好,找創(chuàng)新互聯(lián)!專(zhuān)注于網(wǎng)頁(yè)設(shè)計(jì)、網(wǎng)站建設(shè)、微信開(kāi)發(fā)、成都小程序開(kāi)發(fā)、集團(tuán)企業(yè)網(wǎng)站建設(shè)等服務(wù)項(xiàng)目。為回饋新老客戶(hù)創(chuàng)新互聯(lián)還提供了突泉免費(fèi)建站歡迎大家使用!

一、繼承特性

1、什么是繼承

繼承就是讓類(lèi)和類(lèi)之間產(chǎn)生父子關(guān)系,子類(lèi)可以擁有父類(lèi)的靜態(tài)屬性和方法。

[繼承就是可以獲取另外一個(gè)類(lèi)中的靜態(tài)屬性和普通方法。(并非所有成員)]。

在python中,新建的類(lèi)可以繼承一個(gè)或多個(gè)父類(lèi),父類(lèi)又可稱(chēng)為基類(lèi)或超類(lèi),新 建的類(lèi)稱(chēng)為派生類(lèi)或子類(lèi)。 注意:python中的繼承分為:?jiǎn)卫^承和多繼承。

2、繼承中的子類(lèi)和父類(lèi)的概念

父類(lèi):用于被繼承的類(lèi),稱(chēng)之為父類(lèi),也叫做基類(lèi),或者超類(lèi)。

子類(lèi):繼承其他類(lèi)的類(lèi),稱(chēng)之為子類(lèi),也叫做派生類(lèi)。

3、繼承的作用 就是提高代碼的重用率

練習(xí)1:創(chuàng)建Dog類(lèi)和Cat類(lèi),分別設(shè)置name,gender,age屬性和定義eat()、

class Animal(object):

    def __init__(self,name,gender,age):

        self.age=age

        self.name=name

        self.gender=gender

    def eat(self):

        print("吃。。。。")

    def sleep(self):

        print("睡。。。。")

    def __str__(self):

        return "性別{},年齡{}".format(self.name,self.gender,self.age)

class Dog(Animal):

    def bite(self):

        print("汪汪。。。")

xiaotiandog=Dog("哮天犬","母",21)

xiaotiandog.eat()

xiaotiandog.sleep()

xiaotiandog.bite()

結(jié)果:

吃。。。。

睡。。。。

汪汪。。。

3、查看繼承的父類(lèi)

格式:類(lèi)名.bases

注意: (1).python3中如果一個(gè)類(lèi)沒(méi)有繼承任何類(lèi),默認(rèn)繼承object類(lèi)。我們管這種類(lèi)叫 做新式類(lèi)。

(2).object類(lèi),是python中的祖宗,所有的類(lèi)都是從object類(lèi)中繼承下來(lái)的。

4、方法的覆寫(xiě)

子類(lèi)中定義了和父類(lèi)中相同的方法,我們叫做方法的復(fù)寫(xiě)(派生方法)。

實(shí)例對(duì) 象調(diào)用此方法 的時(shí)候就會(huì)調(diào)用自己類(lèi)中的方法了。

練習(xí)1:定義一個(gè)Person類(lèi)創(chuàng)建eat()方法,定義一個(gè)Student的類(lèi),創(chuàng)建eat()方 法, 規(guī)定學(xué)生去食堂吃飯,定義一個(gè)Boss類(lèi)創(chuàng)建eat()方法,規(guī)定Boss去酒店吃。

class Person(object):

    def eat(self):

        print("吃飯")

class Student(Person):

    def eat(self):

        print("去食堂吃飯")

class Boss(Person):

    def eat(self):

        print("去酒店吃飯")

student=Student()

student.eat()

boss=Boss()

boss.eat()

結(jié)果:

去食堂吃飯

去酒店吃飯

5、super()

子類(lèi)和父類(lèi)有相同的方法,如果子類(lèi)想調(diào)用父類(lèi)相同的的方法??梢允褂?super()方法。

在python3中,子類(lèi)執(zhí)行父類(lèi)的方法也可以直接用super方法 --->super() super默認(rèn)省略了兩個(gè)參數(shù) 第一個(gè)參數(shù)是類(lèi)名,第二個(gè)參數(shù)是self。

兩個(gè)參數(shù)可 以省略不傳遞例如 super(Student,self) super()還可以從類(lèi)的外部使用 需要傳遞類(lèi)名(本類(lèi)的名稱(chēng))和對(duì)象名

例如 super(Student,student)

格式: 父類(lèi)類(lèi)名.方法名稱(chēng)(self) 或者 super().方法名稱(chēng)()或者super(本類(lèi)類(lèi)名,對(duì)象名)

6、init()方法 - 子類(lèi)繼承父類(lèi),如果子類(lèi)不復(fù)寫(xiě)父類(lèi)的init()方法,

創(chuàng)建子類(lèi)對(duì)象的時(shí)候會(huì)自動(dòng)調(diào)用父類(lèi)init()方法。 -

子類(lèi)繼承父類(lèi),如果子類(lèi)復(fù)習(xí)了父類(lèi)的init()方法,

創(chuàng)建的子類(lèi)對(duì)象的時(shí)候不會(huì)再調(diào)用父類(lèi)的init() 方法。

- 注意:python要求復(fù)習(xí)父類(lèi)的init()方法時(shí),需要調(diào)用父類(lèi)的init()   因?yàn)榇嬖陔[患,

例如父類(lèi)的初始化方法有參數(shù),子類(lèi)初始化無(wú)參數(shù),子類(lèi)再調(diào) 用父類(lèi)   的參數(shù)的時(shí)候就會(huì)報(bào)錯(cuò)。

class People(object):

    def __init__(self,name,age,sex):

        print("person------>")

        self.name=name

        self.age=age

        self.sex=sex

    def say(self):

        print("大家好,我是{},今年{}歲,".format())

class Student(People):

    def __init__(self,name,sex,age,score):

        super().__init__(name,sex,age)

        self.score=score

    def talk(self):

        print("我是{},成績(jī){}".format(self.name,self.score))

s=Student("王五","男",23,89)

s.talk()

結(jié)果:

person------>

我是王五,成績(jī)89

7、派生屬性 屬性的覆蓋(派生屬性):子類(lèi)也可以添加自己新的屬性或者在自己這里重新定義 這些屬性(不會(huì)影響到父類(lèi)),需要注意的是,一旦重新定義了自己的屬性且與 父類(lèi)重名,那么調(diào)用新增的屬性時(shí),就以自己為準(zhǔn)了(屬性的覆蓋)。

8、私有屬性私有方法在繼承中的表現(xiàn)

父類(lèi)中的私有方法和私有屬性都是不能被子類(lèi)繼承下來(lái)的。

9、抽象類(lèi)

之前我們定義了Person類(lèi)實(shí)現(xiàn)了eat()、drink()方法, 每種人都會(huì)吃喝但是吃喝的地點(diǎn)不同,如果實(shí)現(xiàn)了方法體就浪費(fèi)了。因此我們可 以只定義eat()方法,不實(shí)現(xiàn)方法體,這種形式我們可以將方法定義為抽象方 法,具有抽象方法的類(lèi)就叫做抽象類(lèi)。 抽象類(lèi)是一個(gè)特殊的類(lèi),只能被繼承,不能實(shí)例化,抽象類(lèi)中可以有抽象方法和 普通方法。

(1) .定義抽象類(lèi) 定義抽象類(lèi)需要導(dǎo)入 abc模塊。from abc import ABCMeta, abstractmethod

import abc

class Person(metaclass=abc.ABCMeta):

function(){ //技術(shù)指標(biāo) http://www.kaifx.cn/mt4/kaifx/1732.html

    @abc.abstractclassmethod

    def eat(self):

        pass

    @abc.abstractclassmethod

    def sleep(self):

        pass

    def breathe(self):

        print("呼吸空氣")

class Man(Person):

    def eat(self):

        print("吃軟飯。。。。")

    def sleep(self):

        print("睡學(xué)校。。。。")

class Women(Person):

    def eat(self):

        print("吃硬菜。。。。")

“python繼承功能是什么”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識(shí)可以關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實(shí)用文章!

本文標(biāo)題:python繼承功能是什么
路徑分享:http://muchs.cn/article18/ihcggp.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供搜索引擎優(yōu)化企業(yè)建站、網(wǎng)站制作品牌網(wǎng)站制作、移動(dòng)網(wǎng)站建設(shè)、網(wǎng)頁(yè)設(shè)計(jì)公司

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀(guān)點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話(huà):028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

綿陽(yáng)服務(wù)器托管