1. 程式人生 > >面向物件組合用法

面向物件組合用法

面向物件的組合用法

一個類中以另一個類的物件作為資料屬性(一個類中引用另一個類的物件)
一種 "有" 的關係:
比如:定義 1個人類 & 1個武器類 然後 張三 有 槍 李四 有 刀

from math import pi
 
class 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) #列印圓面積和周長 <br><br>############################<br><br> 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)