成人无码视频,亚洲精品久久久久av无码,午夜精品久久久久久毛片,亚洲 中文字幕 日韩 无码

資訊專欄INFORMATION COLUMN

Python 繼承 和 多態(tài)

dance / 419人閱讀

摘要:子類繼承父類任何屬性,包括數(shù)據(jù)屬性和方法屬性。繼承,子類獲得了父類的全部功能多態(tài),子類的方法覆蓋了父類的方法在子類中,分別重新修改了方法的實(shí)現(xiàn),這種可以成為多態(tài)。


一、繼承

繼承的概念

在面向?qū)ο蟪绦蛟O(shè)計(jì)中,當(dāng)我們定義一個(gè)類class的時(shí)候,可以從某個(gè)現(xiàn)有的class繼承,新的class稱為子類(Subclass),而被繼承的class稱為基類、父類或超類(Base class、Super class)。

語(yǔ)法形式:

class new_class_name( base_class_1,base_class_2,…. ):
    pass

例如:

class Animal(object):
     def run(self):
         print("animal is running ...")

# Dog繼承Animal,子類獲得了父類的全部功能
class Dog (Animal):
     pass
class Cat(Animal):
     pass

繼承的好處

1、通過(guò)父類派生出子類,子類獲得了父類的全部功能。子類繼承父類任何屬性,包括數(shù)據(jù)屬性和方法屬性。
2、除了繼承父類的全部功能,還可以覆蓋父類的功能,或者定制只屬于自己的特定功能。
如上例子,Animal實(shí)現(xiàn)了run()方法。因此,Dog、Cat作為其子類,自動(dòng)獲得了run()方法。

嘗試運(yùn)行下代碼:

>>> dog = Dog()
>>> dog.run()
animal is running ...
>>> cat = Cat()
>>> cat.run()
animal is running ...
二、多態(tài)

針對(duì)上述第2點(diǎn),通過(guò)繼承覆蓋,可以給子類多帶帶增加或者修改一些方法。

class Animal(object):
     def run(self):
         print("animal is running ...")

# Dog繼承Animal,子類獲得了父類的全部功能
class Dog (Animal):
    # 多態(tài),子類的方法覆蓋了父類的方法
     def run(self):
         print("dog is running...")     
     def eat(self):
         print("eating meat")
    
class Cat(Animal):
     def run(self):
         print("cat is running ... ")

在子類中,分別重新修改了run()方法的實(shí)現(xiàn),這種可以成為“多態(tài)”。

類與數(shù)據(jù)類型

當(dāng)我們定義 了一個(gè)類,實(shí)際上也就定義了一種數(shù)據(jù)類型,與list、dict、string沒(méi)有差別。例如:

a = list()    # a是list類型 
b = Animal() # b是Animal類型 
c = Dog()   # c是Dog類型

我們可以通過(guò)isinstance()來(lái)判斷他們的類型:

>>> isinstance(a, list) 
True 
>>> isinstance(b, Animal) 
True 
>>> isinstance(c, Animal) 
True                        # 此處c不僅僅是Dog類型,還是Animal類型。
>>> isinstance(b, Dog) 
False

可以發(fā)現(xiàn),c對(duì)象不僅僅是Dog類型,還是Animal類型(Dog的父類)。但是反過(guò)來(lái),Animal不是Dog類型。
即在繼承關(guān)系中,如果一個(gè)實(shí)例的數(shù)據(jù)類型是某個(gè)子類,那它的數(shù)據(jù)類型也可以被看做是父類。但是,如果一個(gè)實(shí)例的數(shù)據(jù)類型是父類,不可以被看做是子類。

嘗試如下運(yùn)行:

dog = Dog()
dog.run()
cat = Cat()
cat.run()
結(jié)果就是:
dog is running...
cat is running...

在上述中,傳入dog和cat都是Animal類型,由于Animal類型有run()方法,因此,只要傳入的類型是Animal類或者子類,就會(huì)自動(dòng)調(diào)用實(shí)際類型的run()方法,無(wú)需確切地知道它的子類型。但是具體調(diào)用的run()方法是作用在哪個(gè)對(duì)象上(具體調(diào)用哪個(gè)類的run()方法),由運(yùn)行時(shí)該對(duì)象的確切類型決定。
Dog類對(duì)run()方法進(jìn)行了重寫(xiě),則dog對(duì)象調(diào)用的是自身類里的run()方法,同理cat對(duì)象。


? thanks for watching, keep on updating...
點(diǎn)個(gè)贊再走吧

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://m.hztianpu.com/yun/44982.html

相關(guān)文章

  • Python面向?qū)ο蟮娜筇匦苑庋b、繼承、多態(tài)

      小編寫(xiě)這篇文章的主要目的,主要是來(lái)給大家介紹關(guān)于Python的一些事情,主要還是涉及到面對(duì)面對(duì)象編程的一些實(shí)例,其中,主要涉及到的內(nèi)容涵蓋封裝、繼承、多態(tài)等多種形式,就具體的形式,下面就給大家詳細(xì)解答下?! ython是一門(mén)面向?qū)ο蟮恼Z(yǔ)言。面向?qū)ο蠖加腥筇匦裕悍庋b、繼承、多態(tài)?! ∠旅娣謩e來(lái)說(shuō)說(shuō)這三大特性:  1、封裝  隱藏對(duì)象的屬性和實(shí)現(xiàn)細(xì)節(jié),僅對(duì)外提供公共訪問(wèn)方式。在python中用...

    89542767 評(píng)論0 收藏0
  • python多態(tài)的個(gè)人理解

    摘要:在面向?qū)ο蠓椒ㄖ幸话闶沁@樣表述多態(tài)性向不同的對(duì)象發(fā)送同一條消息,不同的對(duì)象在接收時(shí)會(huì)產(chǎn)生不同的行為即方法。也就是說(shuō),每個(gè)對(duì)象可以用自己的方式去響應(yīng)共同的消息。所謂消息,就是調(diào)用函數(shù),不同的行為就是指不同的實(shí)現(xiàn),即執(zhí)行不同的函數(shù)。 多態(tài)就是:定義一個(gè)類class X(animal) 中間繼承animal 實(shí)現(xiàn)的方法是.run() 方法繼承animal的實(shí)例是cat dog 他們默認(rèn)都有r...

    StonePanda 評(píng)論0 收藏0
  • python學(xué)習(xí)筆記-繼承多態(tài)

    摘要:編程中的繼承和多態(tài)其實(shí)跟生物學(xué)中的遺傳非常類似。中的類繼承了類中的所有方法和屬性,那么就有了所有的屬性和方法。當(dāng)然也可以在的基礎(chǔ)上添加屬性和方法,也可以修改繼承自的屬性和方法覆寫(xiě),。 編程中的繼承和多態(tài)其實(shí)跟生物學(xué)中的遺傳非常類似。例如兒子與父親相比較,有很多相同的地方,那么這就是遺傳;但是父子間也有很多不一樣的地方,那么這就是變異,也就是多態(tài)。 python中的Student類繼承了...

    leiyi 評(píng)論0 收藏0
  • 淺談JavaScript的面向?qū)ο?em>和它的封裝、繼承、多態(tài)

    摘要:會(huì)造成內(nèi)存浪費(fèi)的問(wèn)題構(gòu)造函數(shù)繼承聲明父類聲明子類生成實(shí)例組合式繼承組合式繼承是汲取了兩者的優(yōu)點(diǎn),既避免了內(nèi)存浪費(fèi),又使得每個(gè)實(shí)例化的子類互不影響。 寫(xiě)在前面 既然是淺談,就不會(huì)從原理上深度分析,只是幫助我們更好地理解... 面向?qū)ο笈c面向過(guò)程 面向?qū)ο蠛兔嫦蜻^(guò)程是兩種不同的編程思想,剛開(kāi)始接觸編程的時(shí)候,我們大都是從面向過(guò)程起步的,畢竟像我一樣,大家接觸的第一門(mén)計(jì)算機(jī)語(yǔ)言大概率都是C語(yǔ)...

    MAX_zuo 評(píng)論0 收藏0
  • 淺析 Python 的類、繼承多態(tài)

    摘要:類的定義假如要定義一個(gè)類,表示二維的坐標(biāo)點(diǎn)最最基本的就是方法,相當(dāng)于的構(gòu)造函數(shù)。嚴(yán)格來(lái)講,并不支持多態(tài)。靜態(tài)類型的缺失,讓很難實(shí)現(xiàn)那樣嚴(yán)格的多態(tài)檢查機(jī)制。有時(shí)候,需要在子類中調(diào)用父類的方法。 類的定義 假如要定義一個(gè)類 Point,表示二維的坐標(biāo)點(diǎn): # point.py class Point: def __init__(self, x=0, y=0): se...

    shadajin 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

閱讀需要支付1元查看
<