類的組合:
乙個類中以另乙個類的物件作為資料屬性
例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。這裡兩...