06类中的方法分为哪几种,基础用法是什么?
问题: 类中的方法分为哪几种,基础用法是什么?
👇 点击展开/折叠 面试背诵模板(建议先背这个)
核心区别速览
| 类型 | 首个参数 | 装饰器 | 访问实例属性 | 访问类属性 | 核心用途 |
|---|---|---|---|---|---|
| 实例方法 | self(实例) |
无 | ✅ 是 | ✅ 是 | 操作对象自身数据 |
| 类方法 | cls(类) |
@classmethod |
❌ 否 | ✅ 是 | 工厂方法、计数器、类级配置 |
| 静态方法 | 无特殊参数 | @staticmethod |
❌ 否 | ❌ 否(需显式类名.属性) |
工具函数、逻辑校验 |
基础代码示范
1 | class Student: |
调用方式的本质区别
- 实例方法:必须通过实例调用(
stu.get_name()),解释器自动将实例传入self。 - 类方法:可通过类或实例调用(
Student.change_school()或stu.change_school()),解释器自动将类传入cls。 - 静态方法:可通过类或实例调用(
Student.is_valid_age(18)),无自动传参,形同普通函数。
使用场景选择指南(高频追问)
- 操作对象属性(如修改
self.name):必须使用实例方法。 - 需要创建类的实例并希望子类能重写该行为:使用类方法(如
@classmethod def create(cls): return cls())。 - 仅需处理类级数据(如计数器、配置):优先使用类方法,保留多态性。
- 验证参数、格式转换等不依赖类内部数据:使用静态方法(如校验手机号格式)。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 LGQ的博客!