Python面向對象


  • Python內置對象
    • __dict__ : 類的屬性(包含一個字典,由類的數據屬性組成)
    • __doc__ :類的文檔字符串
    • __name__: 類名
    • __module__: 類定義所在的模塊(類的全名是’__main__.className’,如果類位於一個導入模塊mymod中,那麼className.__module__ 等於 mymod)
    • __bases__ : 類的所有父類構成元素(包含了一個由所有父類組成的元組)
  • 面向對象的編程帶來的主要好處之一是代碼的重用,實現這種重用的方法之一是通過繼承機制。繼承完全可以理解成類之間的類型和子類型關係。
  • 類的繼承在python中的一些特點:
    1:在繼承中基類的構造(__init__()方法)不會被自動調用,它需要在其派生類的構造中親自專門調用。
    2:在調用基類的方法時,需要加上基類的類名前綴,且需要帶上self參數變量。區別於在類中調用普通函數時並不需要帶上self參數
    3:Python總是首先查找對應類型的方法,如果它不能在派生類中找到對應的方法,它纔開始到基類中逐個查找。(先在本類中查找調用的方法,找不到纔去基類中找)。
  • 類的繼承:
class SubClassName (ParentClass1[, ParentClass2, ...]):
   'Optional class documentation string'
   class_suite
  • 類的方法重寫:
#!/usr/bin/python
# -*- coding: UTF-8 -*-

class Parent:        # 定義父類
   def myMethod(self):
      print '調用父類方法'

class Child(Parent): # 定義子類
   def myMethod(self):
      print '調用子類方法'

c = Child()          # 子類實例
c.myMethod()         # 子類調用重寫方法
  • 檢測父類和子類:
    • issubclass() - 布爾函數判斷一個類是另一個類的子類或者子孫類,語法:issubclass(sub,sup)
    • isinstance(obj, Class) 布爾函數如果obj是Class類的實例對象或者是一個Class子類的實例對象則返回true。
  • 基礎重載方法:
    • 1 __init__ ( self [,args…] )構造函數,簡單的調用方法: obj = className(args)
    • 2 __del__( self ),析構方法, 刪除一個對象,簡單的調用方法 : dell obj
    • 3 __repr__( self ),轉化爲供解釋器讀取的形式,簡單的調用方法 : repr(obj)
    • 4 __str__( self ),用於將值轉化爲適於人閱讀的形式,簡單的調用方法 : str(obj)
    • 5 __cmp__ ( self, x ),對象比較,簡單的調用方法 : cmp(obj, x)
  • 類屬性與方法
    • 類的私有屬性
    • __private_attrs:兩個下劃線開頭,聲明該屬性爲私有,不能在類的外部被使用或直接訪問。在類內部的方法中使用時 self.__private_attrs。
      類的方法
    • 在類地內部,使用def關鍵字可以爲類定義一個方法,與一般函數定義不同,類方法必須包含參數self,且爲第一個參數
      類的私有方法
    • __private_method:兩個下劃線開頭,聲明該方法爲私有方法,不能在類地外部調用。在類的內部調用 self.__private_methods
    • Python不允許實例化的類訪問私有數據,但你可以使用 object._className__attrName 訪問屬性
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章