Python()- 面向对象的组合用法


面向对象的组合用法

一个类中以另一个类的对象作为数据属性(一个类中引用另一个类的对象)
一种 "有" 的关系:
比如:定义 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)             #打印圆面积和周长


############################

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)

  

 

posted @ 2017-10-28 23:33  静静别跑  阅读(198)  评论(0编辑  收藏  举报