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

欧美三区_成人在线免费观看视频_欧美极品少妇xxxxⅹ免费视频_a级毛片免费播放_鲁一鲁中文字幕久久_亚洲一级特黄

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

系統(tǒng) 1953 0

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

組合與重用性

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

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

          
            >>> class Equip: #武器裝備類
...     def fire(self):
...         print('release Fire skill')
... 
>>> class Riven: #英雄Riven的類,一個(gè)英雄需要有裝備,因而需要組合Equip類
...     camp='Noxus'
...     def __init__(self,nickname):
...         self.nickname=nickname
...         self.equip=Equip() #用Equip類產(chǎn)生一個(gè)裝備,賦值給實(shí)例的equip屬性
... 
>>> r1=Riven('銳雯雯')
>>> r1.equip.fire() #可以使用組合的類產(chǎn)生的對(duì)象所持有的方法
release Fire skill
          
        

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

1、繼承的方式

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

當(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í),用組合比較好。


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

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號(hào)聯(lián)系: 360901061

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

【本文對(duì)您有幫助就好】

您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺我的文章對(duì)您有幫助,請(qǐng)用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長(zhǎng)會(huì)非常 感謝您的哦?。。?/p>

發(fā)表我的評(píng)論
最新評(píng)論 總共0條評(píng)論
主站蜘蛛池模板: 日本熟妇毛茸茸xxxxx | 欧美成人二区 | 久久不卡免费视频 | 国产精品成人在线观看 | 国产高清精品一区二区三区 | 国产免费资源 | 久久日本精品国产精品白 | 偷拍免费视频 | 国产精品乱码在线观看 | 国产精品高清在线观看 | 看片地址| 99热在线免费观看 | 亚洲精品手机在线 | 91免费视频版 | 亚洲精品一区二区 | 中国精品久久 | 日韩精品亚洲一级在线观看 | 国产免费视频 | 国产精品一码二码三码在线 | 日本久久中文字幕 | 亚洲视频在线视频 | 国产精品岛国久久久久久久 | 91激情视频 | 国产精品久久久久一区二区 | 天天摸天天揉天天碰天天弄 | 天天操夜夜爽 | 91大神在线看 | 波多野结衣亚洲一区二区三区 | 欧美一级电影网 | 久久久久毛片成人精品 | 国产在线精品观看 | 九九精品久久久久久噜噜 | 一级黄色毛片 | 亚洲国产精品久久久久久网站 | 91精品国产综合久久久久久 | 一级毛片免费在线播放 | 午夜小视频免费 | 奇米影视亚洲春色 | 天天干天天操天天透 | 精久久久 | 97国内精品久久久久久久影视 |