zoukankan      html  css  js  c++  java
  • python学习笔记 day23 组合类型

     1. 使用组合创建一个圆环类(组合:一个类的对象可能是别的类的属性)

    from math import pi
    class Circle():
        def __init__(self,r):
            self.r=r
        def area(self):
            return pi*self.r**2
        def perimeter(self):
            return 2*pi*self.r
    class Ring():
        def __init__(self,outside,inside):  # 这里面的outside,inside其实是Circle实例化的对象,在Ring类中作为了Ring类对象的属性,也就是组合类型
            self.outside=outside
            self.inside=inside
        def area(self):
            return self.outside.area()-self.inside.area()
        def perimeter(self):
            return self.outside.perimeter()+self.inside.perimeter()
    
    outside=Circle(4)  # 实例化Circle 就是代表一个圆(对象),该对象又是作为Ring的属性的
    inside=Circle(3)
    print(Ring(outside,inside).area())  # 计算圆环的面积
    print(Ring(outside,inside).perimeter())

    运行结果:

     2. ,使用组合创建一个老师类,老师可以有很多属性,然后需要有生日(也得是一个类),也可以有其他类,或者属性(主要是跟老师相关)

    import time
    class Birthday():
        def __init__(self,year,mon,day):
            self.year=year
            self.mon=mon
            self.day=day
        def view(self):
            return "生日为:%s年%s月-%s日"%(self.year,self.mon,self.day)
    class Days():
        def __init__(self,year,mon,day):  # 这个year是当前的
            self.year=year
            self.mon=mon
            self.day=day
        def cal_days(self):
            days=0
            if self.year %4==0 and self.year%100!=0 or self.year%400==0:  # 闰年
                L=[31,29,31,30,31,30,31,31,30,31,30,31]
            else:
                L=[31,28,31,30,31,30,31,31,30,31,30,31]
            if self.mon==1:
                return self.day
            else:
                for i in range(self.mon-1):
                    days+=L[i]
            return days
    
    
    class Teacher():
        def __init__(self,name,age,sex,birthday,days_bir):
            self.name=name
            self.age=age
            self.sex=sex
            self.birthday=birthday
            self.days_bir=days_bir
        def view_info(self):
            return "今天是:%s月%s日,老师生日是:%s"%(time.localtime().tm_mon,time.localtime().tm_mday,self.birthday.view())
        def cal_days_dif(self,days_cur):
            if self.days_bir.cal_days()-days_cur.cal_days()>=0:
                return self.days_bir.cal_days()-days_cur.cal_days()
            else:
                return days_cur.cal_days()-self.days_bir.cal_days()+365
    
    birthday=Birthday(1996,12,12)
    days_bir=Days(time.localtime().tm_year,birthday.mon,birthday.day)
    days_cur=Days(time.localtime().tm_year,time.localtime().tm_mon,time.localtime().tm_mday)
    t1=Teacher('Eav-J',22,'',birthday,days_bir)
    print(t1.view_info())
    print("距离您生日还有%s天"%(t1.cal_days_dif(days_cur)))

    运行结果:

    这里有一个问题,我是暴力解决的,比如说我生日是 4-12 但现在9-17号,今年生日已经过去了,怎么计算离下次生日还有多久~

    talk is cheap,show me the code
  • 相关阅读:
    使用 JavaScript 将 Silverlight 添加到网页
    网络和通信 Silverlight 中的 HTTP 通信和安全
    在Silverlight中访问Web服务 为 Silverlight 客户端生成服务
    图形三维效果
    关键帧动画
    ajax.dll 与 ajaxpro.dll的用法[摘自网络]
    FlashObject.js去虚框、传参数、获取URL参数
    WEB标准之CSS: 打造自己的重置样式reset.css[转]
    jquery.cookie.js[保存]
    FCKeditor在.net中详细配置[摘自网络]
  • 原文地址:https://www.cnblogs.com/xuanxuanlove/p/9663221.html
Copyright © 2011-2022 走看看