1. 程式人生 > >深度廣度繼承,抽象類接口,綁定方法,@propertry,繼承封裝接口多態鴨子類型關系,組合

深度廣度繼承,抽象類接口,綁定方法,@propertry,繼承封裝接口多態鴨子類型關系,組合

方法 lease gif sta 如果 prope 方便 利用 接口

@propertry 可以將方法偽裝成屬性 調用時.函數名 不需要()

偽裝成屬性後 可以設置@函數名.getattr .setattr 等對外界訪問修改刪除這屬性時進行設置

用於封裝 相當於__getattr__ __set__ 指定某單個屬性的操作

深度廣度

使用到菱形繼承經典類默認深度優先,新式類默認廣度優先

@classmenthod

綁定給類調用,對象也可以調用調用時傳類

@staticmethod

非綁定方法作為函數不會自動傳值

因為Python多繼承沒有真正接口類需要多態,接口類是規定了子類繼承的一個方法結構和給與了規定

而抽象類規定了必須有這些方法,多態展示的是繼承父類的方法有不同的展示效果 鴨子類型不存在一定定義繼承關系也可以共用接口類

深度優先: 按照從左到右 從下到上 ?直找到object為?
?度優先: 如果存在菱形繼承,則從做到右,從下到上,遇到公共?類則換下?條查找路

組合

可以方便的對一個類裏面一個屬性進行設置,並可以添加一個方法

軟件重用的重要方式除了繼承之外還有另外一種方式,即:組合

組合指的是,在一個類中以另外一個類的對象作為數據屬性,稱為類的組合 可以方便的對一個類裏面一個屬性進行設置,並可以添加一個方法

組合與繼承都是有效地利用已有類的資源的重要方式。但是二者的概念和使用場景皆不同,

1.繼承的方式

通過繼承建立了派生類與基類之間的關系,它是一種‘是‘的關系,比如白馬是馬,人是動物。

當類之間有很多相同的功能,提取這些共同的功能做成基類,用繼承比較好,比如老師是人,學生是人

2.組合的方式

用組合的方式建立了類與組合的類之間的關系,它是一種‘有’的關系,比如教授有生日,教授教python和linux課程,教授有學生s1、s2、s3...

class Equip: #武器裝備類
...     def fire(self):
...         print(‘release Fire skill‘)
... 
>>> class Riven: #英雄Riven的類,一個英雄需要有裝備,因而需要組合Equip類
...     camp=‘Noxus‘
...     def __init__(self,nickname):
...         self.nickname=nickname
...         self.equip=Equip() #用Equip類產生一個裝備,賦值給實例的equip屬性
... 
>>> r1=Riven(‘銳雯雯‘)
>>> r1.equip.fire() #可以使用組合的類產生的對象所持有的方法
release Fire skill
技術分享圖片

深度廣度繼承,抽象類接口,綁定方法,@propertry,繼承封裝接口多態鴨子類型關系,組合