乙個類中以另乙個類的物件作為資料屬性(乙個類中引用另乙個類的物件)
一種 "有" 的關係:
比如:定義 1個人類 & 1個**類 然後 張三 有 槍 李四 有 刀
from math import piclass circle:
'''定義了乙個圓形類;
提供計算面積(area)和周長(perimeter)的方法
'''def __init__(self,radius):
self.radius = radius
def area(self):
return pi * self.radius * self.radius
def perimeter(self):
return 2 * pi *self.radius
circle = circle(10) #例項化乙個圓
area1 = circle.area() #計算圓面積
per1 = circle.perimeter() #計算圓周長
print(area1,per1) #列印圓面積和周長
############################
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()
ring = ring(10,5) #例項化乙個環形
print(ring.perimeter()) #計算環形的周長
print(ring.area()) #計算環形的面積
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')
p1=teacher('周','male',
birthdate('1995','1','27'), #傳進去的是物件
couse('python','28000','8 months')
)print(p1.birth.year,p1.birth.month,p1.birth.day)
print(p1.course.name,p1.course.price,p1.course.period)
python物件導向的組合用法
的重複利用除了繼承還有另外的一種方式,就是 組合 組合 在乙個類中以另外乙個類的對我峽谷作為資料屬性,稱為類的組合 例如 計算圓環的面積 最開始 我們不使用組合 from math import pi class circle def init self,r self.r r def circle ...
物件導向的組合用法
類的組合 乙個類中以另乙個類的物件作為資料屬性 例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。這裡兩...