频道栏目
首页 > 资讯 > Python > 正文

Python中的基类,实例,多态,类结构,重要设计模式等知识学习

18-07-26        来源:[db:作者]  
收藏   我要投稿

一,新式类,旧式类

新式类 :后面是以object结尾的

旧式类(经典类)

基类:定义类时,后面的括号后面写上object,会自动继承object类

新式类

旧式类

注意:dir函数可以查看函数继承的方法

二,实例

1,使用面向对象开发,第一部是设计类

2,使用 类名() 创建对象,创建对象的动作有两步

1,在内存中为对象分配空间

2,调用初始化方法__init__为对象初始化

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

因此:

1,创建出来的对象叫做类的实例

2,创建对象的动作叫做实例化

3,对象的属性叫做实例属性

4,对象调用的方法叫做实例化方法

在程序执行时:

1,对象各自拥有自己的实例属性

2,调用对象的方法,可以通过self访问自己的属性,调用自己的方法

结论:

1,每一个对象都有自己独立的内存空间,保存各自不同的属性

2,多个对象的方法,在内存中只有一份,在调用方法时,需要把对象的引用转移到方法的内部

三,多态

多态:不同的子类(继承覆盖的知识)对象调用相同的方法,产生不同的结果

示例

四,类结构

1,类是一个特殊的对象

Python中一切皆对象

class AAA: 定义的类属性属于类对象

obj1 = AAA: 属于实例对象

在运行程序时,类 同样会被加载到内存

在python中,类 是一个特殊的对象--类对象

除了封装 实例(对象)的属性和方法外,类对象还可以有自己的属性和方法

通过 类名. 的方式可以直接访问类的属性或者调用类的方法

类属性就是针对类对象定义的属性

使用赋值语句在class关键字下方可以定义类属性

类属性用于记录这个类的相关的特性

类方法就是针对类对象定义的方法

在类方法内部就可以直接访问类属性或者调用其他类方法

语法如下:

@classmethod

def 类方法(cls):

pass

示例1

示例2

2,静态方法:

在开发时,如果需要在类中封装一个方法,这个方法

即不需要访问实例属性或者调用实例方法

也不需要访问类属性或者调用类方法

这个时候可以把这个方法封装成一个静态方法

语法如下:

@staticmethod

def 静态方法():

pass

静态方法需要修饰器@staticmethod来标识,告殊解释器这是一个静态方法

通过类名,调用静态方法

示例1:

示例2:

需求

1,设计一个Game类

2,属性

记录游戏的历史最高分

记录当前游戏玩家的玩家姓名

3,方法

方法show_help显示游戏帮助信息

方法show_top_score显示历史最高分

方法start_game开始当前玩家的游戏

4,主程序步骤

1,查看帮助信息

2,查看历史最高分

3,创建游戏对象,开始游戏

总结:

1,实例方法:方法内部不需要访问实例属性

2,类方法:方法内部只需要访问类属性

3,静态方法:方法内部不需要访问实例属性和类属性

如果方法内部既需要访问实例属性又需要访问类属性,应该定义实例方法

五,重要设计模式

使用类名()创建对象时,python的解释器首先会调用__new__方法为对象分配空间

__new__是一个有object基类提供的内置的静态方法,主要有两个作用:

在内存中为对象分配空间

返回对象的引用

python解释器获得对象的引用后将引用作为第一个参数,传递给__init__方法

__new__:负责给对象分配空间

__init__(初始化方法)负责给对象初始化

示例1

需求:不同的对象的地址相同

在每次使用 类名()创建对象时,python的解释器都会自动调用两个方法

__new__分配空间

__init__对象初始化

但在上一小结中 __new__方法改造之后,每次都会得到第一次被创建对象的引用

但是:初始化方法还会被再次调用

示例2

需求:不同的对象地址相同并且初始化方法只执行一次

相关TAG标签
上一篇:Linux系统下写一个SHELL简单脚本的操作实例
下一篇:iOS 12 版本新特性介绍
相关文章
图文推荐

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训 | 举报中心

版权所有: 红黑联盟--致力于做实用的IT技术学习网站