python中类的属性、方法、结构以及静态方法

时间:2024-03-27 10:09:03

一、类属性

在Python中一切皆对象,类也是一个对象--->类对象,在程序运行中,类对象在内存中只有一份,通过它可以创建出很多个对象实例,除了封装实例和属性的方法外,类对象还可以拥有自己的属性和方法:类属性和类方法

通过类名的方式可以直接访问类的属性

类属性其实就是 给类对象定义类的属性,通常用来记录与这个类相关的特征

 

python中类的属性、方法、结构以及静态方法

 

二、类方法

类属性就是针对类对象定义的,使用赋值语句在class关键字下可以定义属性,类属性用于记录于这个类相关的特性

类方法就是针对类对象定义的方法,在类方法内部就可以直接访问类属性或调用其他类方法

 

python中类的属性、方法、结构以及静态方法

 

三、类的结构

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

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

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

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

3.对象创建后,内存中就有一个对象的实实在在的存在

因此:

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

在程序执行时:

  1. 对象各自拥有自己的实例属性
  2. 调用对象的方法,可以通过self,访问自己的属性,调用自己的方法

由此得出结论:

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

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

 

四、静态方法

在开发中,如果需要在类中封装一个方法,这个方法既不需要访问实例属性或者调用实例方法,也不需要访问类属性或者调用类方法,这个时候,我们就可以把这个方法封装成一个静态方法

 

python中类的属性、方法、结构以及静态方法

 

五、实例:

1.设计一个Game类
2.属性
    定义一个类属性top_score记录游戏的历史最高分(与这个游戏有关,每次游戏的时候与游戏最高分无关)
    定义一个实例属性player_name记录当前游戏玩家的玩家姓名
3.方法:
    静态方法show_help显示游戏帮助信息(即不需要访问类属性,也不需要访问实例熟悉)
    类方法show_top_score显示历史最高分(访问类属性)
    实例方法start_game开始当前玩家的游戏

1)查看帮助信息
2)查看历史最高分
3)创建游戏对象,开始游戏

 

python中类的属性、方法、结构以及静态方法

python中类的属性、方法、结构以及静态方法

 

案例小结:
1.实例方法--方法内部需要访问实例属性
    实例方法内部可以使用 类名. 访问类属性
2.类方法:方法内部“只”需要访问类属性
3.静态方法:方法内部,不需要访问实例属性和类属性

提问:
如果方法内部 即需要访问实例属性,又需要访问类属性,应该定义什么方法?
答案:
应该定义实例方法
因为,类只有一个,在实例方法内部可以使用类名,访问类属性

 

相关文章