实习日记 2020-01-10

今天继续导师安排的任务,快速学习Python

内容包含:多继承:MRO方法搜索顺序、新式类和旧式类,多态,类属性、类方法、静态方法,单例设计模式

多继承

在昨天写的多继承,如果出现重复的属性或者方法,可以使用 MRO方法搜索顺序 来确定解释器对代码的执行顺序

新式类和旧式类

多态

不同的子类对象,调用相同父类方法,产生不同的执行结果
多态可以增加代码的灵活度
继承重写父类方法为前提
是调用方法的技巧,不会影响类的内部设计

多态:让不同的子类对象,调用相同的父类方法,产生不同的结果

类属性、类方法、静态方法

实例

对象创建后,内存中就有了一个对象实实在在的存——实例

创建出来的 对象 叫做 类的实例
创建对象的 动作 叫做 实例化
对象的属性 叫做 实例属性
对象调用的方法 叫做 实例方法

类对象

类是一个特殊的对象——类对象,也可以定义 类属性类方法
class A: 定义的类属于 类对象
obj1 = A() 利用这个 类对象 创建出来的 对象 叫做 实例对象
程序运行时,类也会被加载到内存
类对象 在内存中只有 一份,实例对象 在内存中可以有 很多份

类属性

定义类属性,在类名下方使用赋值语句就可以,使用类属性记录跟类相关的特征,不会记录具体对象的特征。

类方法

类方法需要用 @classmethod 来标识,告诉解释器这是一个类方法。类方法的第一个参数应该是 cls

静态方法

如果不需要访问实例属性实例方法
不需要访问类属性类方法的时候,可以考虑使用静态方法

参考这个案例:

在这个案例中,run方法并需要访问Dog类的类属性,也需要访问对象属性,这个时候,可以定义成静态方法

三个方法的小结

静态方法:

类方法:

实例方法:

综合案例:植物大战僵尸

方法内部需要访问实例属性,定义使用实例方法
方法内部只需要访问类属性,定义使用类方法
方法内部不需要套访问实例属性类属性,使用静态方法

既要访问类属性,又要访问实例属性,这个时候要选择实例方法
这时候,类属性使用 类名. 的方式访问

单例模式

设计模式:
设计模式是前人工作的总结和提炼,通常是针对某一特定问题的成熟的解决方案
使用设计模式为了可重用代码,让代码更容易被理解,保障代码的可靠性

单例设计模式:
使用创建的对象,在系统中永远只有唯一的一个实例
每一次执行 类名() 返回的对象,内存地址都是相同的

__new__ 方法:为对象在内存分配空间
重写__new__ 方法:

单例初始化:

单例初始化一次

 

 

 

 

致谢:黑马Python教程

发表评论

电子邮件地址不会被公开。 必填项已用*标注