“Python案例:我的日期类MyDate(二)”的版本间的差异

来自CloudWiki
跳转至: 导航搜索
(创建页面,内容为“==案例描述== 我们已经编写过MyDate的日期类,再增加时分秒的数据,派生出日期时间类MyDateTime。 ==案例分析== <nowiki>class MyD…”)
 
 
第12行: 第12行:
 
     def __init__(self,y,mo,d,h,mi,s):
 
     def __init__(self,y,mo,d,h,mi,s):
 
     ......</nowiki>
 
     ......</nowiki>
 +
 +
==代码==
 +
<nowiki>
 +
class MyDate:
 +
    __months=[0,31,28,31,30,31,30,31,31,30,31,30,31]
 +
    def __init__(self,y,m,d):
 +
        if y<0:
 +
            raise Exception("无效年份")
 +
        if m<1 or m>12:
 +
            raise Exception("无效月份")
 +
        if y%40==0 or y%4==0 and y%100!=0:
 +
            MyDate.__months[2]=29
 +
        else:
 +
            MyDate.__months[2]=28
 +
        if d<1 or d>MyDate.__months[m]:
 +
            raise Exception("无效日期")
 +
        self.year=y
 +
        self.month=m
 +
        self.day=d
 +
    def show(self,end='\n'):
 +
        print("%04d-%02d-%02d" %(self.year,self.month,self.day),end=end)
 +
 +
class MyDateTime(MyDate):
 +
    def __init__(self,y,mo,d,h,mi,s):
 +
        MyDate.__init__(self,y,mo,d)
 +
        if h<0 or h>23 or mi<0 or mi>59 or s<0 or s>59:
 +
            raise Exception("无效时间")
 +
        self.hour=h
 +
        self.minute=mi
 +
        self.second=s
 +
 +
    def show(self):
 +
        MyDate.show(self,end=" ")
 +
        print("%02d:%02d:%02d" %(self.hour,self.minute,self.second))
 +
 +
if __name__ =="__main__":
 +
    try:
 +
        d=MyDateTime(2017,7,8,23,12,34)
 +
        d.show()
 +
    except Exception as e:
 +
        print(e)
 +
 +
 +
 +
 +
</nowiki>
 +
 +
结果:
 +
 +
2017-07-08 23:12:34

2022年12月18日 (日) 14:50的最新版本

案例描述

我们已经编写过MyDate的日期类,再增加时分秒的数据,派生出日期时间类MyDateTime。

案例分析

class MyDate:
    def __init__(self,y,m,d):
    ......
 
class MyDateTime(MyDate):
    def __init__(self,y,mo,d,h,mi,s):
    ......

代码

class MyDate:
    __months=[0,31,28,31,30,31,30,31,31,30,31,30,31]
    def __init__(self,y,m,d):
        if y<0:
            raise Exception("无效年份")
        if m<1 or m>12:
            raise Exception("无效月份")
        if y%40==0 or y%4==0 and y%100!=0:
            MyDate.__months[2]=29
        else:
            MyDate.__months[2]=28
        if d<1 or d>MyDate.__months[m]:
            raise Exception("无效日期")
        self.year=y
        self.month=m
        self.day=d
    def show(self,end='\n'):
        print("%04d-%02d-%02d" %(self.year,self.month,self.day),end=end)

class MyDateTime(MyDate):
    def __init__(self,y,mo,d,h,mi,s):
        MyDate.__init__(self,y,mo,d)
        if h<0 or h>23 or mi<0 or mi>59 or s<0 or s>59:
            raise Exception("无效时间")
        self.hour=h
        self.minute=mi
        self.second=s

    def show(self):
        MyDate.show(self,end=" ")
        print("%02d:%02d:%02d" %(self.hour,self.minute,self.second))

if __name__ =="__main__":
    try:
        d=MyDateTime(2017,7,8,23,12,34)
        d.show()
    except Exception as e:
        print(e)





结果:

2017-07-08 23:12:34