面向物件組合用法
阿新 • • 發佈:2018-11-27
面向物件的組合用法
一個類中以另一個類的物件作為資料屬性(一個類中引用另一個類的物件)
一種 "有" 的關係:
比如:定義 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)