2020.2.3 python课程笔记

发布于 2020-03-03  19 次阅读


泛化,

泛化:子类与父类的关系,概念的复用,耦合度最高;

B类泛化A类,意味B类是A类的一种;

做法:B类继承A类


关联,

部分与整体的关系,功能的复用,变化影响一个类;

AB关联,意味着BA的一部分;

做法:在A类中包含B类型成员。

依赖

合作关系,一种相对松散的协作,变化影响一个方法;

 A类依赖B类,意味A类的某些功能靠B类实现;

 做法:B类型作为A类中方法的参数,并不是A的成员。


1.什么时候放到参数,什么时候放成员变量:
一个方法用,就选依赖,多个方法用,就是关联
2.隔离变化的时候:用继承关系

开闭原则

Open Closed Principle

对扩展开放,对修改关闭。

增加新功能,不改变原有代码。


类的单一职责也叫高内聚

Single Responsibility Principle  

一个类有且只有一个改变它的原因。


依赖倒置

Dependency Inversion Principle

客户端代码(调用的类)尽量依赖(使用)抽象的组件。

抽象的是稳定的。实现是多变的。


变化点

组合复用原则(关联关系)

Composite
Reuse Principle

如果仅仅为了代码复用优先选择组合复用,而非继承复用。

组合的耦合性相对继承低。


里氏替换

Liskov Substitution Principle

父类出现的地方可以被子类替换,在替换后依然保持原功能。

子类要拥有父类的所有功能。

子类在重写父类方法时,尽量选择扩展重写,防止改变了功能。

重写
就是子类继承父类,然后子类中有父类的方法

扩展重写
重写的时候,先调用父类的方法,

迪米特法则,低耦合(类与类交互的原则)

Law of Demeter

不要和陌生人说话。

类与类交互时,在满足功能要求的基础上,传递的数据量越少越好。因为这样可能降低耦合度。

什么叫继承:

什么是封装:
数据角度讲:数据统一,行为角度讲,像类外提供功能,实现隐藏细节
设计角度讲,分而治之,封装变化,高耦合,

什么是多态:
调用父,执行子

内置可重写函数

运算符重载
让自定义的类生成的对象(实例)能够使用运算符进行操作

双下划线开头结尾,和双下划线开头的区别
一个是私有变量,一个是系统定义变量

__str__和__repr的区别

__str__函数:将对象转换为字符串(对人友好的)

__repr__函数:将对象转换为字符串(解释器可识别的)

一个返回给人看,一个返回给解释器看

eval函数,与linux的eval差不多

python中直接打印列表,会使用什么函数?
__str__或者__expr__

python重写算数运算符
python 反向算数运算符
python 复合运算符
比较运算符重载


Ares个人进阶之路