python中的物件導向編程

來源:互聯網
上載者:User

標籤:

在python中幾乎可以完成C++裡所有物件導向編程的元素。

繼承:python支援多繼承:

class Derived(base1, base2, base3):

        pass

多態:python中的所有執行個體方法都是virtual類型的

封裝:

  這個比較特殊,C++編程中一直強調得比較多的是:為了隱藏實現,所有的成員變數都要是private類型的,還有那些僅與實現相關的,不作為外部介面的方法都要定義成private類型的(或者protected)。但是在python裡面,並不存在真正的私人類型,根據google python style guide,對於簡單的成員變數訪問,應該直接通過成員的方式而不用特意定義一個訪問函數。還有一點,實現private的方式是通過代碼混淆。且看下面的代碼:

class T(object):
    def __init__(self):
        self.__x = 1.0
    def __func(self):
        print("test")
t = T()
t._T__func()
print(t._T__x)

由於成員的名字前面加了兩個底線(要求是至少兩個),所以最終形成的成員名字被混淆了,不能按照原名字訪問了。但是依舊可以訪問,所有python裡面的私人存取控制

更多的是一種慣例而不是語言特性上直接隔離。

 

最後,關於python中的類的理解,感覺更像是namespace(可以理解為一個雜湊表,可以將名字與變數id對應起來),而且其中的名字還能動態添加(比如給一個執行個體添加一個成員變數)

python中的物件導向編程

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.