Pythonic-类的概念
Python类成员详解:类变量、成员变量与方法解析 🐍
掌握Python面向对象编程的核心概念,让你的代码更加优雅高效!
在Python面向对象编程中,理解类变量、成员变量以及各种方法的区别至关重要。
本文将系统性地介绍这些概念,并通过实例代码展示它们的实际应用。
类变量 vs 成员变量
类变量 🏛️(房子)
- 归属:归属于类本身,所有实例共享同一份
- 定义位置:类内部但在所有方法之外
- 访问方式:
类名.类变量
(推荐)或实例.类变量
成员变量 🧑(住在房子中成员)
- 归属:归属于实例,每个实例拥有独立副本
- 定义位置:通常在
__init__()
方法中初始化 - 访问方式:类内使用
self.成员变量
,类外使用实例.成员变量
类中不同方法
方法类型 | 修饰器 | 访问权限 | 典型用途 |
---|---|---|---|
成员方法 | 无 | 可访问实例数据成员变量 | 操作实例状态 |
类方法 | @classmethod |
可修改类变量 | 类级别操作/替代构造函数 |
静态方法 | @staticmethod |
无特殊访问权限 | 工具函数 |
定义一个类
定义一个Employee类包含上面提到的元素:类变量、成员变量、成员方法、类方法、静态方法。
1 | class Employee: |
变量的访问
- 成员变量:只能通过实例访问
- 类变量:通过类名或实例访问
1 | # 创建实例 |
方法的调用
成员方法
成员方法一般通过修改成员变量来控制实例状态,通过实例对象调用或通过类名将对象作为参数调用。
1 | # 成员方法调用 |
类方法
类方法一般通过修改类变量来达到修改类状态的目标,类状态是类的所有实例共同拥有的状态(例如整个类的统计信息),通过类名调用。
1 | # 类方法修改类变量 |
同时类方法在Python中还有一个常用用途:用来替代构造函数,扩展构造函数的功能或提供更强大的批量构造能力,兼容多种格式的构造能力等。通过类名访问。
1 | # 类方法作为替代构造函数 |
静态方法
静态方法一般与成员变量和类变量无关,只是一个工具类,在逻辑上归属于类或在类中常用放在类中比较合适,通过实例对象或类名都可调用,使用起来就和一般的函数一样。
1 | # 静态方法调用 |
关键注意事项 ⚠️
- 变量查找顺序:Python会先查找实例命名空间,再查找类命名空间
- 类变量修改:通过实例修改类变量会创建实例变量副本,不会真正修改类变量(除非使用类方法)
- 方法选择指南:
- 需要访问实例数据 → 成员方法
- 需要操作类状态 → 类方法
- 独立工具函数 → 静态方法
通过合理使用这些类成员,可以构建出结构清晰、职责分明的Python类。希望这篇解析能帮助你更好地掌握Python面向对象编程!🚀
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 方见思!
评论