zoukankan      html  css  js  c++  java
  • 面向对象 -- 类的组合

    组合

    将一个类的对象封装到另一个类的对象的属性中(一个类的对象是另一个类的对象的属性),就叫组合 

    例如 圆形类的对象是圆环类对象的 outer 属性的值

       计算圆形相关数据的公式只和 Circle 类在一起

       其余的用到公式的地方都是通过 Circle 类来使用的

       公式与其他类之间的关系是一个 '松耦合' 的关系

    # 圆形类
    from math import pi
    class Circle:
        def __init__(self,r):
            self.r = r
    
        def area(self):
            return 3.14*self.r**2
    
        def perimeter(self):
            return 2*3.14*self.r
    
    # 圆环类
    class Ring:
        def __init__(self,r1,r2):
            if r1>=r2:
                self.outer = r1
                self.inner = r2
            else:
                self.inner = r1
                self.outer = r2
    
        def area(self):
            return 3.14 * self.outer ** 2 - 3.14 * self.inner ** 2
    
        def perimeter(self):
            return 2 * 3.14 * self.outer + 2 * 3.14 * self.inner
    c = Circle(5)
    r = Ring(6,8)

    其他示例函数

    class Date:
        def __init__(self,year,month,day):
            self.year = year
            self.month = month
            self.day = day
    
        def date(self):
            return '%s-%s-%s'%(self.year,self.month,self.day)
    
    class Student:
        def __init__(self,name,num,birth,in_shcool,start_day):
            self.name = name
            self.num = num
            self.birth = birth     # 组合
            self.in_school = in_shcool # 组合
            self.start_day = start_day # 组合
    
    d1 = Date(1999,10,27)
    d2 = Date(2019,1,9)
    d3 = Date(2019,2,9)
    feng = Student('冯磊',10086,d1,d2,d3)
    print(feng.birth.year)
    print(feng.birth.month)
    print(feng.birth.day)
    print(feng.birth.date())
    
    feng.start_day.month +=1
    print(feng.start_day.date())
    class Student:
        def __init__(self,name,num,course):
            self.name = name
            self.num = num
            self.course = course
    
    class Course:
        def __init__(self,name,price,period):
            self.name = name
            self.price = price
            self.period = period
    python = Course('python',25000,'6 months')
    s1 = Student('任世龙',10085,python)
    s2 = Student('任希同',10084,python)
    s3 = Student('董鹏',10083,python)
    # print(s1.__dict__)
    python.price = 30000
    python.period = '7 months'
    print(s1.course.price)
  • 相关阅读:
    Python基础学习九 数据库备份
    Python基础学习八 写日志
    Python 小练习三 发邮件
    Python基础补充(二) 多核CPU上python多线程并行的一个假象【转】
    pat 1118 Birds in Forest (25分) 并查集
    Java Map实现按value从大到小排序
    java实现排列组合(通俗易懂)
    java实现24点游戏代码
    eclipse搭建struts2环境及所遇到的问题
    java非常好用的读取文件的流的代码
  • 原文地址:https://www.cnblogs.com/biulo/p/10604322.html
Copyright © 2011-2022 走看看