Python從入門到精pao通lu——OOP面向對象編程

核心特性

  • 封裝
  • 繼承
  • 多態:一個父類接口,不同子類的多種實現
    封裝連接, 例如django鏈接redis,生成一個redis對象,整個週期都使用這個對象

實例化過程

類 + () == 對象

類的組成

  • 屬性:公有屬性 + 私有屬性
  • 方法:保存在類的內存中
  • 公有變量/類變量/靜態字段:
  • 特殊方法

私有屬性

self.__private:只能對象自己訪問/提供對外訪問接口/對象._類名__私有變量
@property的騷操作:可以用來獲取處理值

@property
def usd_percent_change_7d(self) -> float:
    num = self.data['quotes']['USD']['percent_change_7d']
    if num is None:
        return 0
    return float(num)

公有變量/類變量

和方法同一級,沒有self修飾,共同存在於內存中 == 類定義時也會一起被定義,不會等到實例化,且實例化之後,如果實例通過obj.class_attr方式修改類變量,則實例將會自己生成一個實例自有的屬性,實例是不會修改到類變量的

改動類變量只能通過類名來調用, 因爲對象賦值一個屬性是會重新創建的,對象相當於一個作用域

class X:
    hi = []
    
a = X()
b = X()
a.foo = 1 # a創建了一個屬性
print(a.foo) 
print(b.foo) # b是沒有foo這個屬性的

特殊方法

  • __del__:引用被清空,自動執行,程序運行完畢,執行此函數,python中del關鍵字時刪除的是變量名,而不是刪除內存中的變量指向的地址存儲的數據

新式類 & 經典類

新式類

  • 定義類
  • 繼承父類方法
  • 多繼承繼承順序:左,右,上 == 廣度優先

經典類

  • 定義類
  • 繼承父類方法
  • 多繼承繼承順序(Python3.+中跟新式類一致):左,上,右 == 深度優先
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章