Python方法(二) - 類與繼承

類定義

  • 類對象:建立一個類以後,能夠經過類名訪問、改變其屬性、方法
  • 實例對象:類實例化後,可使用其屬性,能夠動態的爲實例對象添加屬性(相似javascript)而不影響類對象。

類的屬性

  • 訪問javascript

    • getattr(obj, name[, default]) : 訪問對象的屬性
    • hasattr(obj,name) : 檢查是否存在一個屬性
    • setattr(obj,name,value) : 設置一個屬性。若是屬性不存在,會建立一個新屬性
    • delattr(obj, name) : 刪除屬性
  • 內置類屬性java

    __dict__ : 類的屬性(包含一個字典,由類的數據屬性組成)
     __doc__ :類的文檔字符串
     __name__: 類名
     __module__: 類定義所在的模塊(類的全名是'__main__.className',若是類位於一個導入模塊mymod中,那麼className.__module__ 等於 mymod)
     _bases__ : 類的全部父類構成元素(包含了一個由全部父類組成的元組)
  • 類的專有方法python

    在類地內部,使用def關鍵字能夠爲類定義一個方法,與通常函數定義不一樣,類方法必須包含參數self,且爲第一個參數
       __init__ 構造函數,在生成對象時調用
       __del__ 析構函數,釋放對象時使用
       __repr__ 打印,轉換
       __setitem__按照索引賦值
       __getitem__按照索引獲取值
       __len__得到長度
       __cmp__比較運算
       __call__函數調用
       __add__加運算
       __sub__減運算
       __mul__乘運算
       __div__除運算
       __mod__求餘運算
       __pow__稱方
  • 類的封裝c++

    python經過變量名命名來區分屬性和方法的訪問權限,默認權限至關於c++和java中的public
       類的私有屬性: __private_attrs:兩個下劃線開頭,聲明該屬性爲私有,不能在類地外部被使用或直接訪問。在類內部的方法中使用時self.__private_attrs。
        類的私有方法:__private_method:兩個下劃線開頭,聲明該方法爲私有方法,不能在類地外部調用。在類的內部調用 self.__private_methods
        雖然python不容許實例化的類訪問私有數據,但可使用 object._className__attrName 訪問屬性。
        其實python內部私有化的實現只是將attrName屬性變爲了_className__attrName而已
  • 類的繼承編程

    面向對象的編程帶來的主要好處之一是代碼的重用,實現這種重用的方法之一是經過繼承機制。繼承徹底能夠理解成類之間的類型和子類型關係。
    
       須要注意的地方:繼承語法 class 派生類名(基類名)://... 基類名寫做括號裏,基本類是在類定義的時候,在元組之中指明的。
    
       在python中繼承中的一些特色:
    
       1:在繼承中基類的構造(__init__()方法)不會被自動調用,它須要在其派生類的構造中親自專門調用。使用super().__init__()或parentClassName.__init__()
       2:在調用基類的方法時,須要加上基類的類名前綴,且須要帶上self參數變量。區別於在類中調用普通函數時並不須要帶上self參數
       3:Python老是首先查找對應類型的方法,若是它不能在派生類中找到對應的方法,它纔開始到基類中逐個查找。(先在本類中查找調用的方法,找不到纔去基類中找)。
       若是在繼承元組中列了一個以上的類,那麼它就被稱做"多重繼承" 。
  • 多態函數

相關文章
相關標籤/搜索