繼承
- 繼承的本質就是重復代碼不要重復編寫
- 概念
- 語法
- 子類繼承自父類,可以直接享受父類中已經封裝好的方法,不需要再次開放
- 子類中應該根據職責,封裝子類特有的屬性和方法
- 幾個專業術語的關系:子類派生 父類基類 繼承==派生
- 繼承具有傳遞性,即子類同時擁有父類的繼承屬性
- 方法的重寫
- 當父類方法不能滿足子類需求怎么辦
- 重寫—在子類中重新編寫—在子類中使用同樣的方法名進行代碼編寫即可
- 擴展—父類方法是子類方法對一部分
- 在子類方法中重寫父類方法
- 在需要位置采用super().父類方法來調用父親方法的執行
- 代碼其他的位置針對子類的特定需求,編寫子類特有代碼實現即可
- super
- 是一個特殊的類
- super()就是使用super類創建出來的對象
- 最常使用的場景就是在重寫父類方法時,調用在父類中封裝的方法實現
- 父類的私有屬性和私有方法
- 子類對象不能在自己的方法內部,直接訪問父親的私有屬性和私有方法
- 子類對象可以通過父類的公有方法去間接訪問父類的私有
- 多繼承—子類可以擁有多個父類,擁有所有父親的屬性和方法
- 新式類和舊式類
- 新式類—以object為基類,推薦使用
- 舊式類—不以object為基類
- class 類名(object):
多態
- 面向對象的三大特征
- 封裝根據職責將屬性和方法封裝到一個抽象類中
- 繼承實現了代碼的重用,相同代碼不需要重復的編寫
- 多態不同的子類對象調用相同的父類方法,產生不同的執行結果
- 認識多態
- 多態可以增加代碼的靈活度
- 以繼承和重寫父類方法為前提
- 是調用方法的技巧,不會影響到類的內部設計
類
- 類的結構
- 面向對象的開發第一步就是設計類
- 使用類名()創建對象,創建對象的動作有兩部分
- 在內存中為對象分配空間
- 調用初始化方法__init__為對象初始化
- 對象創建后,內存中就有了一個對象實實在在的存在—實例
- 創建出來的對象叫做類的實例
- 創建對象的動作叫做實例化
- 對象的屬性叫做實例屬性
- 類其實也是一種對象—類對象在內存中僅有一個
- 既然類是一種特殊的對象—也可以定義類的屬性和方法
- 類屬性和類方法
- 類屬性—給一個類對象定義的屬性或者說特征
- 類方法—針對類對象定義的方法—類方法內部可以直接訪問類屬性或者調用其他的類方法
- 定義
@classmethod
def 類方法名(cls):
pass
- 類方法需要用修飾器@classmethod標識—告訴解釋器這是一個類方法
- 類方法的第一個參數是cls
- 由哪一個類調用的方法,方法內的cls就是哪一個類的引用
- 這個參數的實例方法的第一個參數和self類型
- 提示使用其他名稱也可以,不過習慣使用cls
- 通過類名調用類方法,調用方法時,不需要傳遞cls參數
- 方法內部
- 實現一個類,可以記載自己創建了多少個對象,這次要求將打印封裝成方法
class Tool:
count = 0 # 類屬性
@classmethod
def show_tool_count(cls):
print("the number of tools is %d" % cls.count)
def __init__(self, name):
self.name = name
Tool.count += 1
tool1 = Tool("斧頭")
tool2 = Tool("小刀")
Tool.show_tool_count()
- 靜態方法—如果一個方法既不訪問實例屬性也不訪問類屬性則可以將這個方法封裝為靜態方法
- 選擇何種方法封裝的基本準則
- 實例方法—方法內部需要訪問實例屬性
- 類方法—方法內部只需要訪問類屬性
- 靜態方法—方法內部,不需要訪問實例屬性和類屬性
- 實例方法—方法內部既需要訪問實例屬性又需要訪問類屬性
你是否還在尋找穩定的海外服務器提供商?創新互聯www.cdcxhl.cn海外機房具備T級流量清洗系統配攻擊溯源,準確流量調度確保服務器高可用性,企業級服務器適合批量采購,新人活動首月15元起,快前往官網查看詳情吧

在臨洮等地區,都構建了全面的區域性戰略布局,加強發展的系統性、市場前瞻性、產品創新能力,以專注、極致的服務理念,為客戶提供
網站設計、成都網站建設 網站設計制作按需求定制開發,公司網站建設,企業網站建設,
品牌網站設計,
成都全網營銷,
成都外貿網站建設,臨洮網站建設費用合理。
新聞名稱:Python部分【六】-創新互聯
文章來源:
http://www.xueling.net.cn/article/joosi.html