python面向?qū)ο蟪绦蛟O(shè)計(OOP)

python面向?qū)ο蟪绦蛟O(shè)計(OOP)

  1. 類定義語法

    class className:
    在python中可以使用內(nèi)置方法isinstance()來測試一個對象是否為某個類的實例。

  2. self參數(shù)

    類的所有實例方法都必須至少有一個名為self的參數(shù),并且必須是方法的第一個參數(shù),self參數(shù)代表對象本身。在類的實例方法中訪問實例屬性時需要以self為前綴,但在外部通過對象名調(diào)用對象方法時并不需要傳遞這個參數(shù),如果在外部通過調(diào)用對象方法則需要顯示為self參數(shù)傳值。

  3. 類成員與實例成員

    實例屬性:在構(gòu)造函數(shù)__init__()中定義,定義和使用時必須以self作為前綴。

    類屬性:是在類中所有方法之外定義的數(shù)據(jù)成員。

    在主程序,實例屬性屬于實例(對象),只能通過對象名訪問;而類屬性屬于類,可以通過類名和對象名訪問。

    python特有的動態(tài)類型特點:可以動態(tài)地為類和對象增加成員。

    實例對象.外加方法 = types.MethodType(方法,類)

  4. 私有成員與公有成員

用下劃線作為變量名和方法名前綴和后綴來表示類的特殊成員。
* _xxx:這樣的對象叫做保護成員,不能用"from module import ",只有類對象和子類對象能訪問這些成員。
* __xxx__:系統(tǒng)定義的特殊成員。
* __xxx:類中私有成員,只有類對象自己能訪問,子類對象也不能訪問到這個成員,但在對象外部可以通過
對象名._類名__xxx*這樣的特殊方式訪問。

  1. 方法:
    • 公有方法,私有方法靜態(tài)方法,類方法。

    公有方法,私有方法屬于對象,私有方法的名字以"__"開始,每個對象都有自己的公有方法和私有方法,在這兩類方法中可以訪問屬于類和對象的成員。

    公有方法通過對象名直接調(diào)用,私有方法不能,只能在屬于對象的方法中通過self調(diào)用或在外部通過python支持的特殊方式來調(diào)用。如果通過類名來調(diào)用屬于對象的公有方法,需要顯示為該方法的self參數(shù)傳遞一個對象名,用來明確指定訪問哪個對象的數(shù)據(jù)成員。

    靜態(tài)方法和類方法都可通過類名和對象名調(diào)用,但不能直接訪問屬于對象的成員,只能訪問屬于類的成員。一般將cls作為類的第一個參數(shù)名稱,并且在調(diào)用類方法時不需要為該參數(shù)傳遞值。

        class classname:    
        @classmethod #類方法       
        def classmethod(cls):
        @staticmethod #靜態(tài)方法
        def …
    
  2. 屬性

在python2.x中,使用@property或property()函數(shù)來聲明一個屬性(把一個方法變成屬性調(diào)用),然而屬性并沒有得到真正意義的實現(xiàn),也沒有提供應(yīng)有的訪問保護機制,為對象增加新的數(shù)據(jù)成員時,將隱藏同名的已有屬性。

  1. 繼承機制

在繼承關(guān)系中,已有的設(shè)計好的類稱為父類或基類,新設(shè)計的類稱為子類或派生類。派生類可以繼承父類的公有成員,但是不能繼承其私有成員。如果需要在派生類中調(diào)用基類的方法,可以使用內(nèi)置函數(shù)super()通過基類名.方法名()的方式來實現(xiàn)。
python支持多繼承,如果父類中有相同的方法名,而在子類中使用時沒有定義父類名,則python解釋器將從左至右按順序搜索

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 轉(zhuǎn)至元數(shù)據(jù)結(jié)尾創(chuàng)建: 董瀟偉,最新修改于: 十二月 23, 2016 轉(zhuǎn)至元數(shù)據(jù)起始第一章:isa和Class一....
    40c0490e5268閱讀 2,041評論 0 9
  • 1.1面向?qū)ο?面向?qū)ο?object-oriented ;簡稱: OO)至今還沒有統(tǒng)一的概念 我這里把它定義為:...
    TENG書閱讀 633評論 0 0
  • *面試心聲:其實這些題本人都沒怎么背,但是在上海 兩周半 面了大約10家 收到差不多3個offer,總結(jié)起來就是把...
    Dove_iOS閱讀 27,594評論 30 472
  • 360加固成功脫殼 鏈接1:http://bbs.pediy.com/thread-210275.htm 鏈接2:...
    playboy閱讀 1,434評論 2 6
  • 1.什么是兼容性測試? 兼容性測試是指測試軟件在特定的硬件產(chǎn)臺上、不同的應(yīng)用軟件之間、不同的操作系統(tǒng)平臺上、不同的...
    Zzz_c7ec閱讀 7,840評論 0 1

友情鏈接更多精彩內(nèi)容