美文网首页
Python | 面向对象如何快速实现(二)

Python | 面向对象如何快速实现(二)

作者: 82a7fe2508f4 | 来源:发表于2022-04-07 10:35 被阅读0次

一、类方法 classmethod

类方法是属于类本身的,但也可以使用实例对象访问。只是两者调用的方式有区别(传递参数个数上面)。

类方法在定义中,第一个参数必须为 cls (当然参数名称也可以随意定义,但是cls 是python默认的规定最好不修改)

类方法定义的语法规范:

@classmethod

def 方法名称 (cls [, arg1[, arg2, …[, argN]]]) :

使用装饰器方式定义,告知Pyhton解析器该方法为类方法,解析器优化该方法的执行效率。

(一)类方法的定义及各种调用

第一个参数 cls 代表 当前的类,在使用类直接调用方法的时候 忽略第一个参数,只需传递满足在实例方法定义过程中的 n-1 个后续参数数量即可。

而类的对象实例调用时,同样需要传递与定义数量匹配的n-1个参数。

示例:

ch08-demo09-classmethod.py

(二)类变量的定义及访问操作

类变量 与 类方法 可以成对使用。通过类方法中访问操作类变量。

类变量 声明在类中,类中的各种类型方法均可以访问。

示例:

ch08-demo10-classvar.py

(三)实例方法访问类方法和变量

实例方法可以访问操作类方法 和 类变量。

可以通过类名或者self参数访问类方法和属性

示例:

ch08-demo11-classvar.py

二、静态方法 staticmethod

静态方法是属于类本身的,但也可以使用对象实例调用。但两者调用的方式有区别(传递参数个数上面)。

静态方法在定义中,没有参数要求

静态方法定义的语法规范:

@staticmethod

def 方法名称 ([, arg1[, arg2, …[, argN]]]) :

使用装饰器方式定义,告知Pyhton解析器该方法为类方法,解析器优化该方法的执行效率。

(一)静态方法的定义及各种调用

静态方法在调用的时候,需要传递与定义同等个数的参数。

静态方法可以被类或对象实例调用。

示例:

ch08-demo11-staticmethod.py

(二)Python3中没有实际意义的静态变量

由于Python编程语言为动态语言,因此严格意义上的静态变量是没有必要的。

但是,静态方法可以访问 实例变量 和 类变量。

示例,静态方法访问类变量:

ch08-demo11-staticmethod.py

三、普通方法 ordinaryMethod

● 普通方法在类中的定义与定义一个函数无任何区别。

● 普通方法 可以被 类直接调用 但 不能被 对象实例调用。

● 普通方法无法访问 实例变量 和 类变量。

类方法定义的语法规范:

def 方法名称 ([, arg1[, arg2, …[, argN]]]) :

总结:四种方法之间的区别

业务需求:

● 创建一个游戏场景,涉及3个场景和1个功能。

① 场景1:草场作战,消耗战斗力200

② 场景2:修炼,增长战斗力100

③ 场景3:多人团战,消耗战斗力500

④ 功能1:显示玩家状态

● 当玩家战斗力为0时,阵亡!

技术需求:

使用面向对象的封装特性实现任务的创建及场景功能的调用。

相关文章

网友评论

      本文标题:Python | 面向对象如何快速实现(二)

      本文链接:https://www.haomeiwen.com/subject/pipjsrtx.html