>>classEquip:#武器裝備類...deffire(self):...print('releaseFireskill')...>>>classRiven:#英雄Riven的類,一個英雄需要有裝備,因而需要組合Equip類...camp='Noxus'...def__init" />

亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

Python面向對象編程——組合與重用性

系統 2074 0

Python面向對象編程——組合與重用性

組合與重用性

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

組合指的是,在一個類中以另外一個類的對象作為數據屬性,稱為類的組合。

          
            >>> 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
          
        

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

1、繼承的方式

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

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

2、組合的方式

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

示例:繼承與組合

          
            class People:
    def __init__(self,name,age,sex):
        self.name=name
        self.age=age
        self.sex=sex

class Course:
    def __init__(self,name,period,price):
        self.name=name
        self.period=period
        self.price=price
    def tell_info(self):
        print('<%s %s %s>' %(self.name,self.period,self.price))

class Teacher(People):
    def __init__(self,name,age,sex,job_title):
        People.__init__(self,name,age,sex)
        self.job_title=job_title
        self.course=[]
        self.students=[]


class Student(People):
    def __init__(self,name,age,sex):
        People.__init__(self,name,age,sex)
        self.course=[]


egon=Teacher('egon',18,'male','沙河霸道金牌講師')
s1=Student('牛榴彈',18,'female')

python=Course('python','3mons',3000.0)
linux=Course('python','3mons',3000.0)

#為老師egon和學生s1添加課程
egon.course.append(python)
egon.course.append(linux)
s1.course.append(python)

#為老師egon添加學生s1
egon.students.append(s1)


#使用
for obj in egon.course:
    obj.tell_info()
          
        

3、總結

當類之間有顯著不同,并且較小的類是較大的類所需要的組件時,用組合比較好。


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 免费观看国产网址你懂的 | 四虎国产精品视频免费看 | 免费看日韩欧美一级毛片 | 免费亚洲成人 | 老司机午夜精品视频在线观看免费 | 日本一级大黄毛片一级 | 橘梨纱视频一区二区在线观看 | 日本爱爱免费视频 | 老司机午夜精品视频播放 | 天天做夜夜做久久做狠狠 | 在线看片亚洲 | 亚洲一区不卡视频 | 日日摸夜夜爽人人添 | 青草国产视频 | 精品国产高清毛片 | 狠狠操狠狠干 | 亚洲伊人久久综合 | 视频黄色在线 | 精品日本一区二区 | 狠狠色噜噜狠狠狠狠888奇米 | 狠狠色丁香久久婷婷综合丁香 | 人人爱天天做夜夜爽2020麻豆 | 我想看一级播放片一级的 | 国产精品亚洲一区二区三区久久 | 午夜不卡视频 | 国产一区二区高清在线 | 高清国产美女一级a毛片录 高清国产美女一级毛片 | 色综合久久久久久久久五月性色 | 2021国内精品久久久久影院 | 国产区91| 色婷婷六月| 国产99久久九九精品免费 | 成人在线观看一区 | 色视频在线免费 | 玖玖精品视频 | 欧美高清亚洲欧美一区h | 一日本道加勒比高清一二三 | 一区在线免费观看 | 国产免费片 | 亚洲欧美综合视频 | 亚洲a视频在线 |