日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

Python OOP总结

發布時間:2025/10/17 python 16 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Python OOP总结 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

面試的時候被問到幾次python的OOP都掛了,決定認真的學一遍~~

python的面向對象的設計和c++等編譯語言不同,主要注意的是:

  • python的類沒有訪問權限的問題,也就是說所有的變量都是可訪問的。
    實際上python有私有的機制,就是在屬性前加__,但是這種私有機制實際上也是偽私有,因為它其實是用一個別名來保存這個屬性。
    例如在類A中的self.__a = 4, 實際上__a被修改成了_A__a保持在類中了。
  • 沒有static的說法了,類和實例是區分看待的,一個屬性或者方法可以屬于類也可以屬于實例。

    看下面的例子

    class?A:
    ?? ?i?
    =?'class?var'
    ????
    def?__init__(self):
    ?? ? ? ?self.i?
    =?'instance?var'

    a?
    =?A()
    print?A.i,?a.i

    #result?
    class?var?instance?var

    類和實例之間的元素和函數都是獨立的。
    當然如果你要定義屬于類的方法,因為舊的對象定義強制方法是要帶self參數的,不然調用會出錯的,所以需要static函數,可以這樣做:

    class?A:
    ????i?
    =?'class?var'
    ????
    def?__init__(self):
    ????????self.i?
    =?'instance?var'
    ????
    def?f():?pass
    ????f?
    =?staticmethod(f)

    ?

  • 類和實例中的屬性和方法實際上都是放在類和實例自身的一個字典中,就是__dict__中,所以他們實際上可以看成不同的兩個東西。
    類本身也是對象,所以類和實例都可以在程序中的任何地方進行添加,修改和刪除。對的你甚至可以用del來刪除類中的屬性和函數。
  • 那么當你需要使用類或者實例中的屬性和方法時,python是如何尋找的呢?
    python中的所有的類和實例將會根據他們的繼承關系組成一個對象屬性樹。
    樹的葉子節點是實例,內部節點根據類之間的繼承關系來決定。
    當使用A.a的方法來查找一個節點中的某個元素時,它將在這棵樹上進行搜索,如果當前節點沒有該元素則向上繼續搜索直到根節點,如果向上的過程中出現兩條以上路徑(想想為什么有這種情況),則從左邊向上走,如果到根節點還沒有找到,那么返回到出現分叉的點再往右一條路向上。
    這種尋找方法即使出現了多重繼承(其實就是上面說的兩條以上路徑)也不用擔心出現C++中的情況。

    大概就這些,我發現大部分面試時候還是考的這種我第4點中說的,所以其實想明白很重要。。而且我認為這種方法還是相當優雅滴~~

  • ?


    轉載于:https://www.cnblogs.com/kakafei/archive/2010/11/03/1866666.html

    總結

    以上是生活随笔為你收集整理的Python OOP总结的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。