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

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

Python面向?qū)ο缶幊獭M合與重用性

系統(tǒng) 1907 0

Python面向?qū)ο缶幊獭M合與重用性

組合與重用性

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

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

          
            >>> 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類產(chǎn)生一個裝備,賦值給實(shí)例的equip屬性
... 
>>> r1=Riven('銳雯雯')
>>> r1.equip.fire() #可以使用組合的類產(chǎn)生的對象所持有的方法
release Fire skill
          
        

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

1、繼承的方式

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

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

2、組合的方式

用組合的方式建立了類與組合的類之間的關(guān)系,它是一種‘有’的關(guān)系,比如教授有生日,教授教python和linux課程,教授有學(xué)生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和學(xué)生s1添加課程
egon.course.append(python)
egon.course.append(linux)
s1.course.append(python)

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


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

3、總結(jié)

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


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯(lián)系: 360901061

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

【本文對您有幫助就好】

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

發(fā)表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 人成午夜视频 | 亚洲精品久久久久久久无 | 成人夜色香网站在线观看 | 亚洲a成人7777777久久 | 大胆国模一区二区三区伊人 | 国产亚洲精品网站 | 香蕉久久综合 | 久久99精品一区二区三区 | 精品国产免费观看一区 | 亚洲欧洲精品国产区 | 97在线国产视频 | 色偷偷要色偷偷网站视频在线 | 三级a做爰大乳在线观看 | 亚洲精品视频一区 | 欧美精品xxx | 亚洲网在线观看 | 免费在线观看福利 | 四房婷婷在线视频播放 | 九九热国产精品视频 | 午夜毛片福利 | 想看一级毛片 | 色婷婷综合久久久中文字幕 | 亚洲码和乱人伦中文一区 | 99国产高清久久久久久网站 | 国产婷婷综合在线视频中 | 欧美成人一区亚洲一区 | 日韩精品亚洲一级在线观看 | 国产一区二区三区欧美精品 | 免费看日韩欧美一级毛片 | 欧美一级毛片片aa视频 | 亚洲第一黄色网址 | 97视频在线观看免费视频 | www.黄色网| 久久久成人网 | 日本嫩小xxxxhd | 国产精品久久久久影院嫩草 | 欧美视频在线一区 | 久久久久久久久中文字幕 | 九九色网 | 精品欧美一区二区在线观看 | 黄 色 免 费 网站在线观看 |