Fork me on GitHub

逆水行舟,不进则退

人与人之间最小的差距是智商,最大的差距是坚持。

python学习日记(面向对象——组合)

组合指的是,在一个类中以另外一个类的对象作为数据属性,称为类的组合

圆环是由两个圆组成的,圆环的面积是外面圆的面积减去内部圆的面积。圆环的周长是内部圆的周长加上外部圆的周长。
这个时候,我们就首先实现一个圆形类,计算一个圆的周长和面积。然后在"环形类"中组合圆形的实例作为自己的属性来用

from math import pi
class Circle():
    def __init__(self,r):
        self.radius = r
    def area(self):
        return self.radius*2*pi
    def perimeter(self):
        return self.radius**2*pi
class Ring():
    def __init__(self,outside_r,inside_r):
        self.outside = Circle(outside_r)
        self.inside = Circle(inside_r)
    def area(self):
        return self.outside.area() - self.inside.area()
    def perimeter(self):
        return self.outside.perimeter() - self.inside.perimeter()

ring = Ring(5,4)
a = ring.area()
print(a)
p = ring.perimeter()
print(p)
创建一个老师类
老师有生日
生日也可以是一个类
组合
class Birthday():
    def __init__(self,year,month,day):
        self.year = year
        self.month = month
        self.day = day
class Course():
    def __init__(self,name,period,price):
        self.name = name
        self.period = period
        self.price = price
class Teacher():
    def __init__(self,name,age,sex,birthday):
        self.name = name
        self.age = age
        self.sex = sex
        self.birthday = birthday
        self.course = Course('java','2 days',100)
b = Birthday(2018,1,1)
teacher_wang = Teacher('miss_wang',20,'female',b)
print(teacher_wang.course.name)
print(teacher_wang.birthday.year)
print(teacher_wang.birthday.day)

当类之间有显著不同,并且较小的类是较大的类所需要的组件时,用组合比较好

posted @ 2018-12-29 12:36  咕噜牛Gruffalo  阅读(177)  评论(0编辑  收藏  举报