python面向对象-类与类的关系1

类关系

在面向对象开发中,类之间有各种各样的相互关系,如下:

  1. 继承
  2. 依赖关系
  3. 关联关系
    1. 聚合关系
    2. 组合关系
  4. 实现关系

类关系以java为基础,python做了一些借鉴

UML
为了说明类与类的关系,采用UML建模,关于UML参见:
http://www.malaoshi.top/show_1EF2GcHIk5xB.html

继承关系

UML类图

实线三角指向父类

依赖关系

A类会用到B类,这种关系具有偶然性,临时性。但B类的变化会影响A类。

代码体现:B类 是 A类方法中的参数

案例

在项目开发中,我们经常要进行“日期时间计算”,如:在网购、订外卖时,会提示多少天、多少小时后送到

我们要实现日期计算功能,定义DateTimeUtil类,并定义方法add_datetime(),用于日期时间的加减计算。

在项目开发中,将经常用到的简单功能封装成工具类,该类的后缀一般是“Util”或者“Tool”。

UML类图

使用带箭头的虚线表示,箭头从使用类指向被依赖的类

形参说明:

  1. datetime_,datetime类型,要计算的日期
  2. days,int类型,要加减天数
  3. hours,int类型,要加减的小时
  4. minutes,int类型,要加减的分钟
  5. seconds,int类型,要加减的秒数

返回值:

  1. 返回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


原文出处:/show_1EF2EyXwwVwt.html