国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Python-繼承封裝多態(tài)

這篇具有很好參考價(jià)值的文章主要介紹了Python-繼承封裝多態(tài)。希望對大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

介紹

與java一樣Python是一種支持面向?qū)ο缶幊痰母呒?jí)編程語言,它的核心思想之一就是繼承、封裝和多態(tài)。這三個(gè)概念是面向?qū)ο缶幊讨凶罨?、最核心的思想之一,也是Python編程中必須掌握的知識(shí)點(diǎn)之一

繼承

在面向?qū)ο缶幊讨?,繼承是指一個(gè)類(稱為子類)從另一個(gè)類(稱為父類)繼承其屬性和方法。子類可以繼承父類的所有屬性和方法,并可以根據(jù)需要添加新的屬性和方法。繼承可以減少代碼重復(fù),提高代碼的復(fù)用性和可維護(hù)性。

在python中是可以多繼承的

案例
class IDictService:
    def getInfoById(self, i):
        print('需要子類實(shí)現(xiàn)')


class Log:

    def info(self, msg):
        print('[info]: %s' % msg)


class DictServiceImpl(IDictService, Log):
    def getInfoById(self, i):
        super().getInfoById(i)
        return i


dict = DictServiceImpl()

dict.info(dict.getInfoById(123))

# 通過該方法可以查看繼承的類與順序
print(DictServiceImpl.__mro__)

運(yùn)行結(jié)果

需要子類實(shí)現(xiàn)
[info]: 123
(<class '__main__.DictServiceImpl'>, <class '__main__.IDictService'>, <class '__main__.Log'>, <class 'object'>)
封裝

封裝是面向?qū)ο缶幊讨械囊粋€(gè)重要概念,它允許我們將屬性和方法綁定在一起,并將其隱藏在對象內(nèi)部。通過這種方式,我們可以防止外部程序直接訪問和修改對象的屬性,從而保護(hù)對象的完整性和安全性。

在python中私有方法和屬性通過兩個(gè)下劃線表示__

案例
class Person:
    def __init__(self):
        self.__age = 10
        self.name = 'wendell'

    def getAge(self):
        return self.__age

    def __print(self):
        print("-----test--------")


p = Person()
print(p.name)
print(p.getAge())

# 私有屬性也是不安全的,只不過是加了個(gè)類前綴做了隱藏
p._Person__age = 20
print("被修改了", p.getAge())

# 不可以訪問
# AttributeError: 'Person' object has no attribute 'age'
print(p.__age)
# AttributeError: 'Person' object has no attribute '__print'
print(p.__print())

運(yùn)行結(jié)果

wendell
10
被修改了 20
Traceback (most recent call last):
  File "/Users/wendell/PycharmProjects/study/oop/class_private.py", line 23, in <module>
    print(p.age)
AttributeError: 'Person' object has no attribute '__age'

從上面的結(jié)果可以看出加了__后,對象里面就不會(huì)有這個(gè)屬性了,python里面是通過加了個(gè)類前綴做了隱藏,從而實(shí)現(xiàn)私有屬性的,但是不建議這么去訪問
如p._Person__age

多態(tài)

多態(tài)允許我們使用相同的接口來操作不同的對象。通過這種方式,我們可以編寫通用的代碼,可以處理多種不同類型的對象,從而使代碼更加靈活、可重用和可擴(kuò)展。

案例
# 多態(tài)
class Dog:

    def color(self):
        print("默認(rèn)顏色")


class RedDog(Dog):

    def color(self):
        print('紅色dog')


class YellowDog(Dog):

    def color(self):
        print('黃色dog')


class Unknow(Dog):
    pass


yellow = YellowDog()
red = RedDog()
unknow = Unknow()


def print_color(dog):
    dog.color()


print_color(yellow)
print_color(red)
print_color(unknow)

執(zhí)行結(jié)果

黃色dog
紅色dog
默認(rèn)顏色

上面案例中的 print_color 方法接受一個(gè)參數(shù),這個(gè)參數(shù)沒有定義死,而是隨著運(yùn)行時(shí)傳入的不同對象而執(zhí)行對應(yīng)的方法。這就是多態(tài),通過多態(tài),我們可以編寫通用的代碼,可以處理多種不同類型的對象

總結(jié)

總之掌握面向?qū)ο筮@三個(gè)概念,我們可以編寫更加優(yōu)雅、健壯和可維護(hù)的Python代碼。


歡迎關(guān)注,學(xué)習(xí)不迷路!文章來源地址http://www.zghlxwxcb.cn/news/detail-402222.html

到了這里,關(guān)于Python-繼承封裝多態(tài)的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • c、c++、java、python、js對比【面向?qū)ο?、過程;解釋、編譯語言;封裝、繼承、多態(tài)】

    c、c++、java、python、js對比【面向?qū)ο?、過程;解釋、編譯語言;封裝、繼承、多態(tài)】

    目錄 內(nèi)存管理、適用 區(qū)別 C 手動(dòng)內(nèi)存管理:C語言沒有內(nèi)置的安全檢查機(jī)制,容易出現(xiàn)內(nèi)存泄漏、緩沖區(qū)溢出等安全問題。 適用于系統(tǒng)級(jí)編程 C++ 手動(dòng)內(nèi)存管理:C++需要程序員手動(dòng)管理內(nèi)存,包括分配和釋放內(nèi)存,這可能導(dǎo)致內(nèi)存泄漏和指針錯(cuò)誤。 適用于游戲引擎和系統(tǒng)級(jí)編

    2024年02月08日
    瀏覽(51)
  • Python-面向?qū)ο螅好嫦驅(qū)ο?、成員方法 、類和對象、構(gòu)造方法、魔術(shù)方法、封裝、繼承、類型注解、多態(tài)(抽象類(接口))

    Python-面向?qū)ο螅好嫦驅(qū)ο蟆⒊蓡T方法 、類和對象、構(gòu)造方法、魔術(shù)方法、封裝、繼承、類型注解、多態(tài)(抽象類(接口))

    當(dāng)前版本號(hào)[20230806]。 版本 修改說明 20230806 初版 生活中數(shù)據(jù)的組織 學(xué)校開學(xué),要求學(xué)生填寫自己的基礎(chǔ)信息,一人發(fā)一張白紙,讓學(xué)生自己填, 易出現(xiàn)內(nèi)容混亂 但當(dāng)改為登記表,打印出來讓學(xué)生自行填寫, 就會(huì)整潔明了 程序中數(shù)據(jù)的組織 在程序中簡單使用變量來記錄學(xué)

    2024年02月14日
    瀏覽(22)
  • 封裝、繼承、多態(tài)

    封裝是面向?qū)ο蟮奶卣髦?,是對象和類概念的主要特性?封裝,也就是把客觀事物封裝成抽象的類,并且類可以把自己的數(shù)據(jù)和方法只讓可信的類或者對象操作,對不可信的進(jìn)行信息隱藏。 封裝,是把客觀對象變成抽象的類的過程,在這個(gè)過程中,抽象出具體對象的特征

    2024年02月12日
    瀏覽(20)
  • python 面向?qū)ο缶幊痰奶攸c(diǎn) - 封裝 - 繼承(經(jīng)典類、新式類) - 多態(tài) - 靜態(tài)方法、類方法 - 下劃線的使用 - 回合制攻擊游戲?qū)嶒?yàn)

    python 面向?qū)ο缶幊痰奶攸c(diǎn) - 封裝 - 繼承(經(jīng)典類、新式類) - 多態(tài) - 靜態(tài)方法、類方法 - 下劃線的使用 - 回合制攻擊游戲?qū)嶒?yàn)

    目錄 面向?qū)ο缶幊痰奶攸c(diǎn): 封裝:封裝是將數(shù)據(jù)和操作(方法)封裝在一個(gè)對象中的能力 繼承:繼承是指一個(gè)類(子類)可以繼承另一個(gè)類(父類)的屬性和方法。 我們?yōu)槭裁葱枰^承呢? 父類/基類 = ATM 子類/派生類= ChinaATM/ICBCATM ATM系統(tǒng)父類子類講解代碼: 經(jīng)典類和新式

    2024年02月15日
    瀏覽(23)
  • Java三大特性:封裝、繼承、多態(tài)

    Java三大特性:封裝、繼承、多態(tài)

    高內(nèi)聚,低耦合 高內(nèi)聚:類內(nèi)部操作自己完成,不允許外部干涉。 低耦合:僅暴露少量的方法給外部使用。 封裝(數(shù)據(jù)的隱藏) 通常應(yīng)禁止直接訪問一個(gè)對象中數(shù)據(jù)的實(shí)際表達(dá),而應(yīng)該通過操作接口來訪問,這稱為信息的隱藏。 封裝的特點(diǎn) 1.提高程序的安全性,保護(hù)數(shù)據(jù)

    2024年03月21日
    瀏覽(27)
  • 【C# 基礎(chǔ)精講】繼承、封裝、多態(tài)

    【C# 基礎(chǔ)精講】繼承、封裝、多態(tài)

    繼承(Inheritance)、封裝(Encapsulation)和多態(tài)(Polymorphism)是面向?qū)ο缶幊讨械娜蠛诵母拍睿鼈儤?gòu)成了面向?qū)ο缶幊痰幕A(chǔ),有助于創(chuàng)建更加模塊化、可擴(kuò)展和可維護(hù)的代碼。這三個(gè)概念在C#及其他面向?qū)ο缶幊陶Z言中廣泛應(yīng)用,本文將詳細(xì)解釋這三個(gè)概念的含義、特點(diǎn)

    2024年02月12日
    瀏覽(24)
  • Java 封裝 繼承 多態(tài)(深入理解)

    Java 封裝 繼承 多態(tài)(深入理解)

    登神長階 第二階 封裝 繼承 多態(tài) ???????????????????????????????????????????? 目錄 ??一.面向?qū)ο缶幊痰娜筇匦???二.封裝 ??1.定義及其作用 ???2.訪問限定符 ??3.封裝擴(kuò)展 包(package) ??3.1.定義及其作用 ??? 3.2.導(dǎo)入包的類 ??3.3.自定義包 ??

    2024年03月11日
    瀏覽(25)
  • 面向?qū)ο?類/繼承/封裝/多態(tài))詳解

    面向?qū)ο?類/繼承/封裝/多態(tài))詳解

    面向?qū)ο缶幊蹋∣bject-Oriented Programming,OOP)是一種廣泛應(yīng)用于軟件開發(fā)的編程范式。它基于一系列核心概念,包括類、繼承、封裝和多態(tài)。在這篇詳細(xì)的解釋中,我們將探討這些概念,并說明它們?nèi)绾卧赑HP等編程語言中實(shí)現(xiàn)。 類是OOP的基礎(chǔ)。它是一種用于創(chuàng)建對象的藍(lán)圖或模

    2024年02月08日
    瀏覽(24)
  • 【Java初階(六)上】封裝 繼承 多態(tài)

    【Java初階(六)上】封裝 繼承 多態(tài)

    ?博主主頁: 33的博客? ?文章專欄分類: Java從入門到精通? ??我的代碼倉庫: 33的代碼倉庫?? 對于面向?qū)ο蟪绦蛉筇匦裕悍庋b、繼承、多態(tài)。這篇文章將會(huì)詳細(xì)講解到如何實(shí)現(xiàn)封裝、繼承、多態(tài),以及具體的應(yīng)用。 本章重點(diǎn) 掌握封裝的概念,如何實(shí)現(xiàn)封裝,包的概念,繼

    2024年04月09日
    瀏覽(25)
  • Java面向?qū)ο?- 封裝、繼承和多態(tài)

    目錄 第1關(guān):什么是封裝,如何使用封裝 第2關(guān):什么是繼承,怎樣使用繼承 第3關(guān):super的使用 第4關(guān):方法的重寫與重載 第5關(guān):抽象類 第6關(guān):final的理解與使用 第7關(guān):接口 第8關(guān):什么是多態(tài),怎么使用多態(tài) Java_Educoder

    2024年02月07日
    瀏覽(22)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包