Python学习笔记—— 面向对象4.类属性、类方法、静态方法

文章目录

  • Python学习笔记—— 面向对象4.类属性、类方法、静态方法
    • 一、类属性
      • 术语-------实例
      • 类是一个特殊的对象
      • 类属性的定义和使用
    • 二、类方法
    • 三、静态方法
    • 四、综合实例

一、类属性

术语-------实例

① 使用面向对象开发,第一步是设计类
② 使用类名()创建对象,创建对象的动作有两步:
· 在内存中为对象分配空间
· 调用初始化方法__init__为对象初始化

③ 对象创建后,内存中就有了对象的实实在在的存在----实例
因此,通常也会把:
· 创建出来的对象叫做类的实例
· 创建对象的动作叫做实例化
· 对象的属性叫做实例属性

类是一个特殊的对象

Python 中一切皆对象:
· class AAA: 定义的类属于类对象
· obj1 = AAA()属于实例对象

· 在程序运行时,类同样会被加载到内存
· 在Python中,类是一个特殊的对象 ----类对象
· 在程序运行时,类对象在内存中只有一份,使用一个类在对象中可以创建出多个对象实例
· 除了封装实例的属性和方法外,类对象还可以拥有自己的属性和方法
· 通过类名.的方式可以访问类的属性或者调用类的方法

类属性的定义和使用

· 类属性就是给类对象中定义的属性
· 通常用来记录与这个类相关的特征
· 类属性不会用于记录具体对象的特征

class Tool(object):#使用赋值语句,定义类属性,记录创建工具对象的总数count = 0def __init__(self,name):self.name = name#针对类属性做一个计数+1Tool.count +=1
#创建工具对象
tool1 = Tool("斧头")
tool2 = Tool("榔头")
tool3 = Tool("铁楸")
print(Tool.count)

3

二、类方法

类方法就是针对类对象定义的方法
· 在类方法内部可以直接访问类属性或者调用其他的类方法
语法如下:

@classmethod
def 类方法名(cls):pass

· 类方法需要用修饰器@classmethod来标识,告诉解释器这是一个类方法
· 类方法的第一个参数应该是cls
→由那一个类调用的方法,方法内的cls就是哪一个类的引用,与self类似

实例:

class Tool(object):#使用赋值语句,定义类属性,记录创建工具对象的总数count = 0def __init__(self,name):self.name = name#针对类属性做一个计数+1Tool.count +=1@classmethoddef show_tool_count(cls):print("工具对象总数 %d"%cls.count)
#创建工具对象
tool1 = Tool("斧头")
tool2 = Tool("榔头")
tool3 = Tool("铁楸")
Tool.show_tool_count()

工具对象总数 3

三、静态方法

在开发时,如果需要再类中封装一个方法,这个方法:
· 既不需要访问实例属性和实力方法
· 也不需要访问类属性和类方法
这个时候可以把方法封装成一个静态方法
语法如下:

@staticmethod
def 静态方法名():pass

不需要用self作为第一个参数

示例:

class Dog(object):@staticmethoddef run():print("小狗要跑...")
Dog.run()

小狗要跑…

四、综合实例

class Game(object):# 历史最高分top_score = 0def __init__(self, player_name):self.player_name = player_name@staticmethoddef show_help():print("帮助信息:让僵尸进入大门")@classmethoddef show_top_score(cls):print("历史最高分是 %d" % cls.top_score)def start_game(self):print("%s 开始游戏啦..." % self.player_name)def score(self, score):print("本次得分为%d"%score)if score >= Game.top_score:Game.top_score = score# 1.查看游戏的帮助信息
Game.show_help()
# 2.查看历史最高分
Game.show_top_score()
# 3.创建游戏对象
game = Game("小明")
game.start_game()
game.score(100)
game.show_top_score()
game.score(50)
game.score(150)
game.show_top_score()

帮助信息:让僵尸进入大门
历史最高分是 0
小明 开始游戏啦…
本次得分为100
历史最高分是 100
本次得分为50
本次得分为150
历史最高分是 150

Python学习笔记—— 面向对象4.类属性、类方法、静态方法相关推荐

  1. python学习高级篇(part1)--类属性

    学习笔记,仅供参考,有错必纠 学习资源:图解python 文章目录 类属性 举个例子 举个例子 类属性 类属性指的是类对象所绑定的属性. 绑定类属性(给类对象绑定属性)的方式有两种: 在类对象的内部( ...

  2. JAYのpython学习笔记——对象和类

    为对象定义类 类定义对象的特征和行为 python会在运行时为每个对象赋予一个独特的id来辨识这个对象 数据域:即变量or实例变量,用于描述对象的状态,例如圆的radius,矩形的height和wid ...

  3. python学习笔记(面向对象,类)

    一.类的定义 1.类的基本结构 #命名规则: 驼峰法 class Student(): # 使用class 定义类a= 1 # 变量name = '小明'def aa(self): # 函数print ...

  4. python学习笔记-为自定义类或者函数编写help文档,以及进行文档测试

    在python中我们可以利用help("模块名")或者help(类名)的方式来查看类或者函数的文档.但是它们是如何编写的呢? 其实它们在类最前面或者方法的最前面用"&qu ...

  5. Python学习笔记之五:类定义

    这里,我定义了一个类,初始化函数,Show函数,并且定义了文档字符串,使用了help函数和__doc__来调用文档字符串 >>> class FooClass(object):&qu ...

  6. Python学习笔记28:从协议到抽象基类

    Python学习笔记28:从协议到抽象基类 今后本系列笔记的示例代码都将存放在Github项目:https://github.com/icexmoon/python-learning-notes 在P ...

  7. python学习笔记(六)——类的初始化(__init__)、类属性和类方法 和 对象

    学习本篇文章后会了解到:类的创建,为对象添加属性,对象的初始化,自定义对象的输出,类属性和类方法的创建. 1. 类的定义与格式 类是对一群具有相同特征或者行为的事物的一个统称. 类是一个模块,是负责创 ...

  8. Python学习笔记 (类与对象)

    Python学习笔记 (类与对象) 1.类与对象 面向对象编程语言类: 一个模板, (人类)-是一个抽象的, 没有实体的对象: (eg: 张三, 李四) 属性: (表示这类东西的特征, 眼睛, 嘴巴, ...

  9. Python学习笔记(九):类和对象

    Python学习笔记(九):类和对象 关于类和对象 Python学习笔记(九):类和对象 一.类和对象 类的定义 类的实例化 类对象的使用 二.self用法 三.类方法 实例方法 类方法 静态方法 静 ...

  10. Python学习笔记(十九)面向对象 - 继承

    Python学习笔记(十九)面向对象 - 继承 一.继承的概念 # 继承:子类继承父类的所有方法和属性# 1. 子类 class A(object):def __init__(self):self.n ...

最新文章

  1. C#.NET跨线程控件的相关操作
  2. 设计微服务架构需要掌握的基础知识
  3. python 图像无缝拼接,OpenCV Python 系列教程3 - Core 组件
  4. MySQL数据库模式_SQL模式
  5. 北京爱情故事-经典语录
  6. Mysql数据库的高可用
  7. php td复制剪贴板,选择一个带有Javascript的完整表格(复制到剪贴板)
  8. hadoop之MapReduce的案例(排序、最大值)
  9. 千万别被“读书无用”给害了
  10. 问题描述_vortex_新浪博客
  11. 汉明码---存储器校验(简单易懂详解)
  12. 75 ----平面二次曲线方程的化简、移轴变换、转轴变换、伸缩变换
  13. NSString copy or not (strong)?
  14. 图片太大不知道怎么变小,教你几个压缩方法
  15. iReport报表Detail设置自适应高度
  16. selenium tips
  17. L9954LXP_特殊功能,车门模块驱动器
  18. 软考·系统架构师论文——论软件的高并发设计
  19. 智能机器人 迪姆人工_艾美迪迪姆智能故事机
  20. Vegas与会声会影的十大不同点整理

热门文章

  1. QQ互联开发者信息认证
  2. idea启动vue项目
  3. 三大通信协议(1)UART
  4. 学习Dart语言,看这一篇文章就够了!(详细介绍)
  5. EPS电动转向系统分析
  6. Linux 通配符 与 正则表达式 的区别与详解
  7. 微信小程序tabBar的开发设置
  8. 光学成像系统的模型及MATLAB仿真
  9. 缅甸投资环境及法律政策简介
  10. 中国行政区划代码(2020年版)附树形sql与excel