Python语言面向对象概念之实例、类对象、类属性、类方法、静态方法

Edda ·
更新时间:2024-09-20
· 901 次阅读

文章目录一、实例二、类对象1. 概念简介2. 定义使用三、类方法1. 概念简介2. 定义使用四、静态方法1. 概念简介2. 定义使用五、方法综合案例1. 案例需求2. 代码实现五、参考资料 一、实例 使用面向对象方式进行程序开发,首先是设计; 其次是使用**类名()**创建对象,而创建对象又分为两步:
(1)使用__new__()方法在内存中为对象分配空间;
(2)调用初始化方法__init__()为对象初始化; 对象创建后,内存中就有了一个对象的实实在在的存在,即实例

因此,通常也会把:

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

结论:

每一个对象都有自己独立的内存空间,保存各自不同的实例属性多个对象的方法,在内存中只有一份,在调用实例方法时,需要把对象的引用传递给实例方法。 二、类对象 1. 概念简介

在Python中,一切皆对象

class AAA:语法定义的类为类对象obj = AAA()语法创建实例对象。 程序运行时,同样会被加载到内存中; 程序运行时,类对象在内存中只有一份,使用一个类可以创建出多个实例对象,且所有实例对象共用保存在类对象中的一份实例方法类对象可以拥有自己的属性方法: 类属性 类方法 通过类名.的方式可以访问类的属性或者调用类的方法2. 定义使用 类属性是给类对象定义的属性; 类属性用来记录与这个类相关的特征; 类属性不会用于记录具体对象的特征

如下面代码实现这样的需求:

定义一个工具类; 每件工具都有name实例属性; 需要知道通过这个类创建了多少个工具对象。 class Tool(object): # 使用赋值语句定义类属性,记录所有工具对象的数量 count = 0 def __init__(self, name): self.name = name # 让类属性的值+1 Tool.count += 1 # 1. 创建工具对象 tool1 = Tool("斧头") tool2 = Tool("榔头") tool3 = Tool("水桶") # 2.输出工具对象的总数 print(Tool.count)

对于Python中提供的用于访问类属性的机制,需要注意的是:

可以通过两种方式访问类属性: 类名.类属性 对象.类属性(这涉及所谓Python中的属性获取向上查找机制,即通过对象.属性未找到实例属性时,解释器会查到是否有同名类属性,但不推荐使用这种方式,原因如下)。 如果使用对象.类属性 = 值这样的语句,只会给对象添加一个属性,而不会影响到类属性的值三、类方法 1. 概念简介 类方法就是针对类对象定义的方法。在类方法内部可以直接访问类属性或者调用其他的类方法定义类方法需要使用装饰器@classmethod来标识,用以告诉解释器这是一个类方法; 类方法的第一个参数应该是cls,由哪一个类来调用类方法,方法内的cls就是哪一个类的引用,这个参数和实例方法中的第一个参数self类似。 2. 定义使用 class Tool(object): # 使用赋值语句定义类属性,记录所有工具对象的数量 count = 0 @classmethod def show_tool_count(cls): print("工具对象的数量%d" % cls.count) def __init__(self, name): self.name = name # 让类属性的值+1 Tool.count += 1 # 创建工具对象 tool1 = Tool("斧头") tool2 = Tool("榔头") # 调用类方法 Tool.show_tool_count() 四、静态方法 1. 概念简介

如果需要在类中封装一个方法,但是这个方法,既不需要访问实例属性或者调用实例方法,又不需要访问类属性或者调用类方法,这个时候,可以把这个方法封装成一个静态方法

定义静态方法需要通过装饰器@staticmethod来进行标识,且定义时既不需要指定self参数、也不需要指定cls参数,通过类名.静态方法名来调用静态方法。

2. 定义使用 class Dog(object): @staticmethod def run(): # 不访问实例属性/类属性 print("小狗要跑...") # 通过类名.调用静态方法 - 不需要创建对象 Dog.run() 五、方法综合案例 1. 案例需求 设计一个Game类; Game类的属性情况为: 定义一个类属性top_score记录历史最高分; 定义一个实例属性player_name记录当前游戏的玩家姓名Game类的方法情况为: 静态方法show_help用来显示游戏帮助信息; 类方法show_top_score显示历史最高分; 实例方法start_game开始当前玩家的游戏。 主程序的步骤为: 查看帮助信息; 查看历史最高分; 创建游戏对象,开始游戏。 2. 代码实现

对照下列类图,有如下代码:
在这里插入图片描述

class Game(object): # 类属性 - 历史最高分 top_score = 0 # 实例属性 - 玩家姓名 def __init__(self, player_name): self.player_name = player_name # 静态方法 - 显示游戏帮助信息 @staticmethod def show_help(): print("帮助信息:让僵尸进入大门!") # 类方法 - 显示历史最高分 @classmethod def show_top_score(cls): print("历史记录%d" % cls.top_score) # 实例方法 - 开始游戏 def start_game(self): print("%s开始游戏啦!" % self.player_name) # 1.查看游戏帮助信息 Game.show_help() # 2.查看历史最高分 Game.show_top_score() # 3.创建游戏对象 gamer = Game("小明") gamer.start_game() 五、参考资料

本文主要参考网络教程。


作者:TakingCoding4Granted



方法 属性 对象 静态 类对象 类属性 类方法 面向对象 静态方法 Python

需要 登录 后方可回复, 如果你还没有账号请 注册新账号