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

Python類多重繼承方式

 更新時間:2023年11月10日 17:14:32   作者:小廖同志_  
這篇文章主要介紹了Python類多重繼承方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教

Python類多重繼承

在 Python中有6種標(biāo)準(zhǔn)數(shù)據(jù)類型,分別為:

  • Number(數(shù)字)
  • String(字符串)
  • List(列表)
  • Tuple(元組)
  • Sets(集合)
  • Dict(字典)

而根據(jù)內(nèi)存中的內(nèi)容是否可變,分為可變類型與不可變類型。

其中,數(shù)字、字符串、元組和集合被稱為不可變類型,列表和字典稱為可變類型。

1. 不可變類型子類化

假定我們需要處理大量的浮點數(shù),將浮點數(shù)四舍五入后得到最后的結(jié)果。

這時我們可以定義這樣一個類,用來進行這個操作。

例如:

class RoundFloat(float):  
    def __new__(cls, val):  
        return float.__new__(cls,round(val,1))  
print(RoundFloat(2.6557))  

結(jié)果為:

2.7

在這個類里面,通過調(diào)用父類的構(gòu)造器來創(chuàng)建對象,然后實例化float、RoundFloat

這里我們僅僅是從一種類型中派生而來,我們可以使用super()內(nèi)建函數(shù)去捕獲對應(yīng)的父類,然后調(diào)用父類的__new__()方法進行實例化。

例如:

class RoundFloat(float):  
    def __new__(cls, val):  
        return super(RoundFloat,cls).__new__(cls,round(val,1))  
print(RoundFloat(2.6557))  

結(jié)果為:

2.7

2. 可變類型子類化

子類化一個可變類型與子類化不可變類型很類似,但是我們可能不需要使用__new__()或者是__init__(),因為一般情況下我們定義的類所繼承到的類型的默認行為就足夠我們用了。

例如:

class SortedKeyDict(dict):  
    def keys(self):  
        return sorted(super( SortedKeyDict, self).keys())  
d = SortedKeyDict((('zhangsan', 1), ('lisi', 2),('wangwu', 3)))  
print("By iterator:".ljust(12), [key for key in d])  
print("By keys():".ljust(12), d.keys())  

結(jié)果為:

By iterator: ['zhangsan', 'lisi', 'wangwu']  
By keys():   ['lisi', 'wangwu', 'zhangsan']  

3. 多重繼承

在 Python 中,多重繼承就是允許子類繼承多個父類,子類可以調(diào)用多個父類的方法和屬性。

但是,當(dāng)多個父類擁有相同方法名的方法時,我們通過方法名調(diào)用父類方法就有一定的順序。

例如:

class A(object):  
    def test(self):  
        print("this is A.test()")  
class B(object):  
    def test(self):  
        print("this is B.test()")  
    def check(self):  
        print("this is B.check()")  
class C(A,B):  
    pass  
class D(A,B):  
    def check(self):  
        print("this is D.check()")  
class E(C,D):  
    pass

在這個例子中,類C繼承自類A和類B,類D繼承自類A和類B,類E繼承自類C和類D。

在我們調(diào)用E.test()時,在類A和類B中都存在這個方法。

但是由于在多重繼承中遵循廣度優(yōu)先的方式,所以程序最先搜索類E,然后再搜索類C和類D。

如果還沒找到,再到類A中查找。若類A中存在這個方法,則調(diào)用這個方法,若在類A中也沒有找到,則再到類B中查找。

調(diào)用E.test()結(jié)果為:

this is A.test()  

如果調(diào)用E.check()方法,那么先到類E中查找,然后在類C中查找,再到類D中查找。

在類D中找到這個方法,調(diào)用這個方法。

調(diào)用E.check()的結(jié)果為:

this is D.check()  

總結(jié)

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Python實現(xiàn)壓縮pdf文件大小

    Python實現(xiàn)壓縮pdf文件大小

    工作中常需要壓縮數(shù)據(jù)文件大小,壓縮PDF文件是一種減少PDF文件大小的方法,這樣可以使文件更易于傳輸和存儲,本文將使用Python實現(xiàn)這一功能,需要的可以參考下
    2024-02-02
  • Python使用list列表和tuple元組的方法

    Python使用list列表和tuple元組的方法

    這篇文章主要介紹了Python使用list列表和tuple元組的方法,list是一種有序的集合,可以隨時添加和刪除其中的元素,下文更多相關(guān)介紹需要的小伙伴可以參考一下
    2022-03-03
  • Python處理缺失數(shù)據(jù)的多種方式

    Python處理缺失數(shù)據(jù)的多種方式

    在數(shù)據(jù)分析和數(shù)據(jù)處理的過程中,缺失數(shù)據(jù)(Missing Data)是一個常見的問題,缺失數(shù)據(jù)的存在可能會影響模型的準(zhǔn)確性和預(yù)測的可靠性,因此正確處理缺失數(shù)據(jù)是數(shù)據(jù)分析的重要步驟,所以本文給大家介紹了Python處理缺失數(shù)據(jù)的多種方式,需要的朋友可以參考下
    2024-08-08
  • Python使用logging模塊實現(xiàn)打印log到指定文件的方法

    Python使用logging模塊實現(xiàn)打印log到指定文件的方法

    這篇文章主要介紹了Python使用logging模塊實現(xiàn)打印log到指定文件的方法,結(jié)合實例形式分析了Python logging模塊的原理及相關(guān)日志輸出操作技巧,需要的朋友可以參考下
    2018-09-09
  • Python數(shù)據(jù)列表中的空補0的問題解決

    Python數(shù)據(jù)列表中的空補0的問題解決

    在Python中,如果你有一個包含空值的數(shù)據(jù)列表,你可以使用列表推導(dǎo)式或循環(huán)將這些空值替換為0,本文就來介紹一下如何解決,感興趣的可以了解一下
    2024-03-03
  • 如何使用PyCharm引入需要使用的包的方法

    如何使用PyCharm引入需要使用的包的方法

    這篇文章主要介紹了如何使用PyCharm引入需要使用的包的方法,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-09-09
  • Python如何使用函數(shù)做字典的值

    Python如何使用函數(shù)做字典的值

    這篇文章主要介紹了Python如何使用函數(shù)做字典的值,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2019-11-11
  • Django1.11配合uni-app發(fā)起微信支付的實現(xiàn)

    Django1.11配合uni-app發(fā)起微信支付的實現(xiàn)

    這篇文章主要介紹了Django1.11配合uni-app發(fā)起微信支付的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-10-10
  • PyTorch如何搭建一個簡單的網(wǎng)絡(luò)

    PyTorch如何搭建一個簡單的網(wǎng)絡(luò)

    這篇文章主要介紹了PyTorch如何搭建一個簡單的網(wǎng)絡(luò),幫助大家更好的理解和學(xué)習(xí)PyTorch,感興趣的朋友可以了解下
    2020-08-08
  • opencv檢測動態(tài)物體的實現(xiàn)

    opencv檢測動態(tài)物體的實現(xiàn)

    本文主要介紹了opencv檢測動態(tài)物體的實現(xiàn),文中通過示例代碼介紹的非常詳細,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-07-07

最新評論