欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python進(jìn)階語法之類的繼承

 更新時(shí)間:2021年12月14日 15:01:44   作者:一個(gè)興趣使然的程序猿罷了  
這篇文章主要為大家介紹了Python類的繼承,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助

在編寫類時(shí),我們并非每次都需要從空白開始。

如果我們要編寫的類是我們曾經(jīng)編寫過的類(現(xiàn)成的)的特殊版本,可使用繼承。

一個(gè)類繼承另一個(gè)類時(shí),將自動(dòng)獲得另一個(gè)類的所有屬性和方法。原有的類稱為父類,而新類稱為子類。子類繼承了父類的所有屬性和方法,同時(shí)還可以定義自己的屬性和方法。

一、子類的方法__init__( )

在既有類的基礎(chǔ)上編寫新類時(shí),通常要調(diào)用父類的方法__init__( )。這將初始化在父類__init__( )方法中定義的所有屬性,從而讓子類包含這些屬性。

例如,下面來模擬電動(dòng)汽車。電動(dòng)汽車是一種特殊的汽車,因此可在前面創(chuàng)建的Car類的基礎(chǔ)上創(chuàng)建新類ElelctricCar。這樣就只需為電動(dòng)汽車特有的屬性和行為編寫代碼。

創(chuàng)建一個(gè)Car類

class Car:
    """一次模擬汽車的簡單嘗試"""
    def __init__(self, make, model, year):
        """初始化汽車的屬性"""
        self.make = make
        self.model = model
        self.year = year
        self.odometer_reading = 0
    def get_descriptive_name(self):
        """返回整潔的描述性信息"""
        long_name = f'{self.year}{self.make}{self.model}'
        return long_name.title()
    def read_odometer(self):
        """打印一條指出汽車?yán)锍痰南?""
        print(f"This car has {self.odometer_reading} miles on it")
    def update_odometer(self, mileage):
        if mileage >= self.odometer_reading:
            self.odometer_reading = mileage
        else:
            print('你怎么能調(diào)表呢??。??!')
    def increment_odoment(self,miles):
        """將里程表讀數(shù)增加到指定數(shù)量"""
        self.odometer_reading+=miles

創(chuàng)建子類ElelctricCar

下面我們來創(chuàng)建ElelctricCar類的一個(gè)簡單版本,它具備Car類的所有功能:

class Car
    pass
class ElectricCar(Car):
    """電動(dòng)汽車的獨(dú)特之處"""
    def __init__(self,make,model,year):
        """初始化父類的屬性"""
        super().__init__(make, model, year)
my_tesla=ElectricCar(' tesla', ' models', 2021)
print(my_tesla.get_descriptive_name())

首先是Car類的代碼。創(chuàng)建子類時(shí),父類必須包含在當(dāng)前文件中,且位于子類的前面。定義子類ElectricCar。定義子類時(shí),必須在圓括號(hào)內(nèi)指定父類的名稱。方法__init__( )接受創(chuàng)建Car實(shí)例所有需要的信息。

super()是一個(gè)特殊函數(shù),讓你能夠調(diào)用父類的方法。這行代碼能讓Pyhton調(diào)用Car類的方法__init__( ),讓ElectricCar實(shí)例包含這個(gè)方法中定義的所有屬性。父類也稱為超類(superclass),名稱super由此而來。

二、給子類定義屬性和方法

讓一個(gè)類繼承另一個(gè)類后,就可以添加區(qū)分子類和父類所需的新屬性和新方法了。

下面來添加一個(gè)電動(dòng)汽車特有的屬性(電瓶),以及一個(gè)描述該屬性的方法。我們將存儲(chǔ)電瓶容量,并編寫一個(gè)打印電瓶描述的方法:

class Car:
    pass
    def __init__(self,make,model,year):
        """初始化父類的屬性。
           再初始化電動(dòng)汽車特有的屬性"""
      super().__init__(make, model, year)
        self.battery_size = 75
    def descibe_battery(self):
        """打印一條描述電瓶容量的消息"""
        print(f"這個(gè)車有{self.battery_size}千瓦時(shí)的電池")
my_tesla=ElectricCar(' tesla', ' models', 2021)
print(my_tesla.get_descriptive_name())
my_tesla.descibe_battery()

在這里給Car類添加的子類ElectricCar類中,又定義了一個(gè)battery_size屬性,,并且添加了一個(gè)describer_battery( )方法 ,打印有關(guān)電瓶的信息。調(diào)用這個(gè)方法時(shí),將會(huì)看到一特有的描述:

2021 Tesla Models
這個(gè)車有75千瓦時(shí)的電池

三、重寫父類的方法

對(duì)于父類的方法,我們有可能發(fā)現(xiàn)父類的方法不符合子類模擬的實(shí)物的行為,這時(shí)我們便可以改寫它。為此,我們可以在子類中定義一個(gè)與要重寫的父類方法同名的方法。這樣Python將不會(huì)考慮這個(gè)父類的方法。

比如:

class ElectricCar(Car):
    pass
    def fill_gas_tank(self):
        """電動(dòng)汽車沒有油箱"""
        print("這個(gè)車沒有油箱!")

將此定義在子類也寫一遍之后,即可覆蓋父類中的方法。

總結(jié)

本篇文章就到這里了,希望能夠給你帶來幫助,也希望您能夠多多關(guān)注腳本之家的更多內(nèi)容!

相關(guān)文章

  • Python創(chuàng)建日歷實(shí)例

    Python創(chuàng)建日歷實(shí)例

    這篇文章主要介紹了Python創(chuàng)建日歷實(shí)例,不使用Python提供的calendar實(shí)現(xiàn),需要的朋友可以參考下
    2014-08-08
  • opencv python簡易文檔之圖像處理算法

    opencv python簡易文檔之圖像處理算法

    OpenCV是一個(gè)開源庫,包含了許多計(jì)算機(jī)視覺算法,它在計(jì)算機(jī)視覺和圖像處理中起著重要作用,用于實(shí)時(shí)操作,其效率足以滿足工業(yè)上的要求,這篇文章主要給大家介紹了關(guān)于opencv python簡易文檔之圖像處理算法的相關(guān)資料,需要的朋友可以參考下
    2021-08-08
  • Python針對(duì)給定列表中元素進(jìn)行翻轉(zhuǎn)操作的方法分析

    Python針對(duì)給定列表中元素進(jìn)行翻轉(zhuǎn)操作的方法分析

    這篇文章主要介紹了Python針對(duì)給定列表中元素進(jìn)行翻轉(zhuǎn)操作的方法,結(jié)合實(shí)例形式分析了Python針對(duì)列表元素基于切片及遍歷輸出兩種翻轉(zhuǎn)操作實(shí)現(xiàn)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2018-04-04
  • 基于深度學(xué)習(xí)和OpenCV實(shí)現(xiàn)目標(biāo)檢測

    基于深度學(xué)習(xí)和OpenCV實(shí)現(xiàn)目標(biāo)檢測

    這篇文章主要介紹了通過使用OpenCV進(jìn)行基于深度學(xué)習(xí)的對(duì)象檢測以及使用OpenCV檢測視頻,文中的示例代碼講解詳細(xì),需要的可以參考一下
    2021-12-12
  • python實(shí)現(xiàn)bucket排序算法實(shí)例分析

    python實(shí)現(xiàn)bucket排序算法實(shí)例分析

    這篇文章主要介紹了python實(shí)現(xiàn)bucket排序算法,實(shí)例分析了Python排序的相關(guān)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-05-05
  • Python實(shí)現(xiàn)生活常識(shí)解答機(jī)器人

    Python實(shí)現(xiàn)生活常識(shí)解答機(jī)器人

    今天教大家如何用Python爬蟲去搭建一個(gè)「生活常識(shí)解答」機(jī)器人.思路:這個(gè)機(jī)器人主要是依托于“阿里達(dá)摩院發(fā)布的語言模型PLUG”,通過爬蟲的方式,發(fā)送post請(qǐng)求(提問),然后返回json數(shù)據(jù)(回答),需要的朋友可以參考下
    2021-06-06
  • 對(duì)Django url的幾種使用方式詳解

    對(duì)Django url的幾種使用方式詳解

    今天小編就為大家分享一篇對(duì)Django url的幾種使用方式詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2019-08-08
  • Python文件如何讀取read()函數(shù)

    Python文件如何讀取read()函數(shù)

    這篇文章主要介紹了Python文件如何讀取read()函數(shù)問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-02-02
  • Python curses內(nèi)置顏色用法實(shí)例

    Python curses內(nèi)置顏色用法實(shí)例

    在本篇文章里小編給大家整理的是一篇關(guān)于Python curses內(nèi)置顏色用法實(shí)例內(nèi)容,有興趣的朋友們可以學(xué)習(xí)下。
    2021-06-06
  • 使用Python 操作 xmind 繪制思維導(dǎo)圖的詳細(xì)方法

    使用Python 操作 xmind 繪制思維導(dǎo)圖的詳細(xì)方法

    在平時(shí)的工作中當(dāng)我們要總結(jié)一些知識(shí)的時(shí)候就需要一款工具來畫畫流程圖,這里推薦 XMind 軟件,用 Xmind 繪制的思維導(dǎo)圖看起來思路清晰,那么今天的文章介紹關(guān)于思維導(dǎo)圖的相關(guān)知識(shí)以及用 Python 如何操作 Xmind 繪制思維導(dǎo)圖
    2021-10-10

最新評(píng)論