python物件導向的組合用法

2021-08-31 13:34:30 字數 3086 閱讀 4680

**的重複利用除了繼承還有另外的一種方式,就是:組合

組合:在乙個類中以另外乙個類的對我峽谷作為資料屬性,稱為類的組合

例如:計算圓環的面積:

最開始:我們不使用組合:

from math import pi

class circle:

def __init__(self, r):

self.r = r

def circle_area(self):

return pi*self.r**2

def circle_permeter(self):

return 2*pi*self.r

class ring:

def __init__(self, out_r, in_r):

self.out_r = out_r

self.in_r = in_r

def ring_area(self):

return pi*self.out_r**2 - pi*self.in_r**2

def ring__permeter(self):

return pi * self.out_r * 2 - pi * self.in_r * 2

ring1 = ring(5, 3)

print(ring1.ring__permeter())

print(ring1.ring_area())

使用組合用法:

from math import pi

class circle:

def __init__(self, r):

self.r = r

def circle_area(self):

return pi*self.r**2

def circle_permeter(self):

return 2*pi*self.r

class ring:

def __init__(self, out_circle, in_circle):

self.out_circle = circle(out_circle)

self.in_circle = circle(in_circle)

def ring_area(self):

return self.out_circle.circle_area() - self.in_circle.circle_area()

def ring__permeter(self):

return self.out_circle.circle_permeter() - self.in_circle.circle_permeter()

ring1 = ring(5, 3)

print(ring1.ring__permeter())

print(ring1.ring_area())

1.在__init__方法裡面組合

class birthdate:

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

self.year=year

self.month = month

self.day = day

class course:

def __init__(self,name,price,period): #period為週期

self.name =name

self.price = price

self.period = period

class teacher:

def __init__(self,name,salary,year,month,day,price,period): #那麼這個裡面也要把該有的屬性傳進去

self.birth = birthdate(year,month,day) #在裡面組合(將birthdate裡面有的屬性傳入進去)

self.course=course(name,price,period)

self.name = name

self.salary = salary

# 例項化方法一:

egg = teacher('egon',2000,1999,12,2,'6 months','15800') #也要例項化,teacher類裡面的屬性都得例項化

print(egg.birth.month) #當然老師也有生日,就讓egg.birth.month

print(egg.course.period)

# 例項化方法二:

egg.birth=birthdate(1996,22,4)

print(egg.birth.month)

在__init__裡面組合

2.在外面組合

class birthdate:

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

self.year=year

self.month = month

self.day = day

class course:

def __init__(self,name,price,period): #period為週期

self.name =name

self.price = price

self.period = period

class teacher:

def __init__(self,name,salary,course):

self.name = name

self.salary = salary

self.course = course

## #在外面組合。(組合就是乙個類的屬性是另乙個類的物件)

egg = teacher('egon',2000,'python')

egg.birth=birthdate(1996,22,4) #直接給egg乙個birth的屬性,

print(egg.birth.year)

egg.course =course('python','6 months',15800)

print(egg.course.period)

在類外面例項化組合

Python 物件導向的組合用法

乙個類中以另乙個類的物件作為資料屬性 乙個類中引用另乙個類的物件 一種 有 的關係 比如 定義 1個人類 1個 類 然後 張三 有 槍 李四 有 刀 from math import pi class circle 定義了乙個圓形類 提供計算面積 area 和周長 perimeter 的方法 def...

物件導向的組合用法

類的組合 乙個類中以另乙個類的物件作為資料屬性 例1.人裝備 class weapon def prick self,obj 這是該裝備的主動技能,扎死對方 obj.life value 500 假設攻擊力是500 class person 定義乙個人類 role person 人的角色屬性都是人 ...

VLOOKUP IF 組合用法

這是vlookup的逆序查詢的經典用法。vlookup只能在首列搜尋,返回指定列的資料,上面的公式是搜尋列不在第一列的,因此利用if的陣列用法,將a列和b列進行 調序 if b1 b7,a1 a7 if的資料用法,當條件為1時,返回第乙個結果b1 b7 當條件為0時,返回第二個結果a1 a7。這裡兩...