python之組合與重用性

2022-07-19 09:18:11 字數 2235 閱讀 4963

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

組合指的是,在乙個類中以另外乙個類的物件作為資料屬性,稱為類的組合

>>> 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.繼承的方式

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

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

教授是老師

>>> class teacher:

... def __init__(self,name,gender):

... self.name=name

... self.gender=gender

... def teach(self):

... print('teaching')

...>>>

>>> class professor(teacher):

... pass

...>>> p1=professor('egon','male')

>>> p1.teach()

teaching

2.組合的方式

用組合的方式建立了類與組合的類之間的關係,它是一種『』的關係,比如教授有生日,

教授教python課程

class birthdate:

def __init__(self,year,month,day):

self.year=year

self.month=month

self.day=day

class couse:

def __init__(self,name,price,period):

self.name=name

self.price=price

self.period=period

class teacher:

def __init__(self,name,gender):

self.name=name

self.gender=gender

def teach(self):

print('teaching')

class professor(teacher):

def __init__(self,name,gender,birth,course):

teacher.__init__(self,name,gender)

self.birth=birth

self.course=course

p1=professor('egon','male',

birthdate('1995','1','27'),

couse('python','28000','4 months'))

print(p1.birth.year,p1.birth.month,p1.birth.day)

print(p1.course.name,p1.course.price,p1.course.period)

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

類與物件之組合

第二大題 基於圓形類實現乙個圓環類,要求接收引數 外圓半徑和內圓半徑 完成方法 計算環形面積和環形周長 公式自己上網查 radius半徑 acreage面積 要求,借助組合,要求組合圓形類的物件完成需求 circular ring圓環 perimeter周長 from math import pi ...

Python與機器學習之Numpy描述性統計

在機器學習應用過程中,遇到複雜的機器學習系統,往往是乙個人或者乙個團隊去研究優化某個部分。而andrew ng不止一次的提到,有些公司花六個月去解決一開始就錯的問題 eg.high variance but try more training examples 最後發現該部分根本不影響整體。from...

python排列組合之itertools模組

幾個有用的python函式 笛卡爾積,排列,組合 9.7.itertools functions creating iterators for efficient looping 1 有序排列permutations a。2 不放回抽球兩次,r引數預設為len abc 3 for i in iter...