真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

什么是Python對象的繼承

什么是Python對象的繼承?針對這個問題,這篇文章詳細(xì)介紹了相對應(yīng)的分析和解答,希望可以幫助更多想解決這個問題的小伙伴找到更簡單易行的方法。

成都創(chuàng)新互聯(lián)公司于2013年開始,先為壺關(guān)等服務(wù)建站,壺關(guān)等地企業(yè),進(jìn)行企業(yè)商務(wù)咨詢服務(wù)。為壺關(guān)企業(yè)網(wǎng)站制作PC+手機(jī)+微官網(wǎng)三網(wǎng)同步一站式服務(wù)解決您的所有建站問題。

淺談python的對象的三大特性之繼承

前面我們定義了人的類,并用這個類實例化出兩個人jack和lily,查看了它們的內(nèi)存空間。

現(xiàn)在我們再來看看類中所存在的對向?qū)ο缶幊痰娜筇匦灾^承的一些特性。

前面定義了一個人的類,可是我們還知道,人都有屬于自己的職業(yè),比如說老師類,醫(yī)生類,警察類等。

我們可以為每個職業(yè)都定義一個類,按照前面的定義,我們可以使用下面的代碼來實現(xiàn)。

定義一個老師類:

class Teacher:
    def __init__(self,name,age,sex,course):
        self.name=name
        self.age=age
        self.sex=sex
        self.course=course
    def walk(self):
        print("%s is walking slow"%self.name)
    def teach(self):
        print("%s is teaching"%self.name)

定義一個學(xué)生類:

class Student:
    def __init__(self,name,age,sex,group):
        self.name=name
        self.age=age
        self.sex=sex
        self.group=group
        
    def walk(self):
        print("%s is walking slow"%self.name)
        
    def study(self):
        print("%s is studying hard"%self.name)

我們可以看到teacher和student類中,有很多重復(fù)的代碼。它們都有人類所共有的name,age,sex等特征,以及有人類有的walk這個技能,那么我們就可以把人類共有的name,age,sex特征和walk技能抽離出來,生成一個人的類,然后用老師和學(xué)生的類來繼承人的類的這些特征和技能,這樣可以避免寫重復(fù)的代碼。

繼承關(guān)系是子類繼承父類,是類與類之間的關(guān)系

解決代碼重用的問題,減少代碼冗余,這就是我們說的類的三大特征之一的繼承。

把兩個或多個類中的共同點抽離出來,生成一個新的類,也就是被繼承的類,我們稱之為父類
把從父類中繼承特征和技能的類稱為子類或基類

具體實現(xiàn)代碼如下:

我們先把老師和學(xué)生中所重復(fù)的代碼抽離出來,生成一個人類:

class Person:
    def __init__(self,name,age,sex):
        self.name=name
        self.age=age
        self.sex=sex
        
    def walk(self):
        print("%s is walking slow"%self.name)

然后定義一個老師類,來繼承人的類的一個特征和技能:

class Teacher(Person):
    def __init__(self, name, age, sex, course):
        Person.__init__(self, name, age, sex)
        self.course = course
    def teach(self):
        print("%s is teaching" % self.name)

最后,再定義一個學(xué)生類,來繼承人的類的一些特征和技能:

class Student(Person):
    def __init__(self, name, age, sex,group):
        Person.__init__(self, name, age, sex)
        self.group = group
    def study(self):
        print("%s is studying hard" % self.name)

類定義好了,在通過把類實例化生成一個學(xué)生和一個老師

t1=Teacher("Jack",18,"male","python")
s1=Student("Tom",28,"female","group1")

就可以調(diào)用s1或t1的特征和技能了。

比如,我想知道學(xué)生的姓名和老師的年齡,就可以這樣做:

print(t1.age,s1.name)

輸出結(jié)果為:

18 Tom

調(diào)用老師t1的走路的技能:

t1.walk()

輸出為:

Jack is walking slow

調(diào)用老師t1的教書的技能:

t1.teach()

輸出為:

Jack is teaching

調(diào)用學(xué)生s1的走路的技能:

s1.walk()

輸出為:

Tom is walking slow

調(diào)用學(xué)生s1學(xué)習(xí)的技能:

s1.study()

輸出為:

Tom is studying hard

我們還可以使用下面的語句來查看子類Student所繼承的父類的名稱:

print(Student.__bases__)

得到結(jié)果如下:

(,)

同樣的,打印子類Teacher的父類也會得到同樣的結(jié)果,顯示其父類為Person.

在上面的輸出中,可以看到輸出結(jié)果是一個元組。這樣的話,一個子類就可以繼承多個父類了。

查看子類的父類得到的結(jié)果是前面定義的Person類,那我們查看Person的類的話,會得到什么樣的結(jié)果呢?

print(Person.__bases__)

輸出為:

(,)

其結(jié)果也是一個元組,但是這里出現(xiàn)了一個object,那么這個object又是什么東東?

事實上,在python3中,所有的類默認(rèn)都繼承object類。

在python中:

凡是繼承了object類的子類,以及該子類的子類都被為新式類;

沒有繼承object類的子類稱為經(jīng)典類.

所以python3中,所有的類都是新式類。

而在python2中,沒有繼承object的類,以及它的子類,通常稱為經(jīng)典類。

來看幾個例子:

這幾個例子,都是在python2的解釋器中運(yùn)行的:

>>> class Foo:
...     pass
... 
>>> Foo.__bases__
()
>>> class Bar(object):
...     pass
... 
>>> Bar.__bases__
(,)

可以看到,F(xiàn)oo這個類是一個經(jīng)典類,而定義的第二個Bar類則是一個新式類。

在定義老師和學(xué)生類的時候,在類的名字后面要加上被繼承的類Person的名字,以告訴python解釋器,這里調(diào)用了類的繼承的特性。

關(guān)于什么是Python對象的繼承問題的解答就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道了解更多相關(guān)知識。


當(dāng)前題目:什么是Python對象的繼承
URL地址:http://weahome.cn/article/gjcooc.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部