物件導向的組合用法

2022-04-11 10:26:51 字數 1649 閱讀 2786

類的組合:

乙個類中以另乙個類的物件作為資料屬性

例1.人裝備**

class weapon:

def prick(self, obj): # 這是該裝備的主動技能,扎死對方

obj.life_value -= 500 # 假設攻擊力是500

class person: # 定義乙個人類

role = 'person' # 人的角色屬性都是人

def __init__(self, name):

self.name = name # 每乙個角色都有自己的暱稱;

self.weapon = weapon() # 給角色繫結乙個**;

egg = person('egon')

egg.weapon.prick()

#egg組合了乙個**的物件,可以直接egg.weapon來使用組合類中的所有方法

例2.求圓環的面積,周長

class circle:

def __init__(self,radius):

self.radius = radius

def area(self):

return pi * self.radius * self.radius

def perimeter(self):

return 2 * pi *self.radius

class ring:

def __init__(self,radius_outside,radius_inside):

self.outsid_circle = circle(radius_outside)

self.inside_circle = circle(radius_inside)

def area(self):

return self.outsid_circle.area() - self.inside_circle.area()

def perimeter(self):

return self.outsid_circle.perimeter() + self.inside_circle.perimeter()

用組合的方式建立了類與組合之間 關係,它是一種『有』的關係,

例:教師有生日

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,birth,course):

self.name=name

self.gender=gender

self.birth=birth

self.course=course

def teach(self):

print('teaching')

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

python物件導向的組合用法

的重複利用除了繼承還有另外的一種方式,就是 組合 組合 在乙個類中以另外乙個類的對我峽谷作為資料屬性,稱為類的組合 例如 計算圓環的面積 最開始 我們不使用組合 from math import pi class circle def init self,r self.r r def circle ...

Python 物件導向的組合用法

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

VLOOKUP IF 組合用法

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