类关系
在面向对象开发中,类之间有各种各样的相互关系,如下:
- 继承
- 依赖关系
- 关联关系
- 聚合关系
- 组合关系
- 实现关系
类关系以java为基础,python做了一些借鉴
UML
为了说明类与类的关系,采用UML建模,关于UML参见:
http://www.malaoshi.top/show_1EF2GcHIk5xB.html
继承关系
实线三角指向父类
依赖关系
A类会用到B类,这种关系具有偶然性,临时性。但B类的变化会影响A类。
代码体现:B类 是 A类方法中的参数
案例
在项目开发中,我们经常要进行“日期时间计算”,如:在网购、订外卖时,会提示多少天、多少小时后送到
我们要实现日期计算功能,定义DateTimeUtil类,并定义方法add_datetime(),用于日期时间的加减计算。
在项目开发中,将经常用到的简单功能封装成工具类,该类的后缀一般是“Util”或者“Tool”。
UML类图
使用带箭头的虚线表示,箭头从使用类指向被依赖的类
形参说明:
datetime_,datetime类型,要计算的日期days,int类型,要加减天数hours,int类型,要加减的小时minutes,int类型,要加减的分钟seconds,int类型,要加减的秒数
返回值:
- 返回datetime类型
代码如下
'''
日期加减计算
第一个形参是datetime类型
'''
@staticmethod
def add_datetime(datetime_,days=0, hours=0,minutes=0,seconds=0 ):
if type(datetime_) == datetime:
delta = timedelta(days=days, hours=hours, minutes=minutes, seconds=seconds)
n_days = datetime_ + delta
return n_days
else:
raise TypeError("形参datetime_是datetime类型,请重新传入!")
测试调用
date_="2018-11-11 12:00:00"
datetime_=datetime.strptime(date_,"%Y-%m-%d %H:%M:%S")
new_datetime=DateTimeUtil.add_datetime(datetime_,hours=2,minutes=15)
print(datetime.strftime(new_datetime,"%Y-%m-%d %H:%M:%S"))
优化与练习
在上面调用代码中,发现在调用add_date()方法前必须将字符串日期,转换成datetime类型,然后才能调用。操作起来比较麻烦。
优化add_date()方法,让该方法即可传入字符串类型的日期,也可以传入datetime类型的日期。
https://blog.csdn.net/zhujun_xiaoxin/article/details/78539010
https://www.cnblogs.com/jiqing9006/p/5915023.html

