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

Python進階語法之類的繼承

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

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

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

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

一、子類的方法__init__( )

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

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

創(chuàng)建一個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):
        """打印一條指出汽車里程的消息"""
        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('你怎么能調表呢??。??!')
    def increment_odoment(self,miles):
        """將里程表讀數增加到指定數量"""
        self.odometer_reading+=miles

創(chuàng)建子類ElelctricCar

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

class Car
    pass
class ElectricCar(Car):
    """電動汽車的獨特之處"""
    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)建子類時,父類必須包含在當前文件中,且位于子類的前面。定義子類ElectricCar。定義子類時,必須在圓括號內指定父類的名稱。方法__init__( )接受創(chuàng)建Car實例所有需要的信息。

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

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

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

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

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

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

2021 Tesla Models
這個車有75千瓦時的電池

三、重寫父類的方法

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

比如:

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

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

總結

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

相關文章

最新評論

黔江区| 高碑店市| 苏尼特左旗| 沈丘县| 泸西县| 保亭| 佛教| 驻马店市| 墨竹工卡县| 玛曲县| 奉节县| 信宜市| 珠海市| 舟山市| 壶关县| 湟中县| 邵阳县| 金寨县| 丹东市| 潞西市| 新密市| 廊坊市| 元谋县| 甘孜| 五台县| 甘洛县| 荣成市| 贺州市| 凉山| 宁国市| 湘阴县| 大方县| 浙江省| 平邑县| 台山市| 蒙山县| 华池县| 崇信县| 墨江| 临洮县| 山丹县|