15 分钟
Python 进阶

类方法与静态方法

区分类方法、实例方法和静态方法

  • @classmethod 类方法
  • @staticmethod 静态方法
  • 选择合适的方法类型

三种方法对比

示例代码(可运行)
ℹ️何时用哪种

实例方法:操作实例数据。类方法:操作类或创建实例(工厂方法)。静态方法:逻辑上属于类但不需要类/实例数据的工具函数。

预测输出
class C:
    count = 0
    @classmethod
    def inc(cls):
        cls.count += 1
C.inc()
C.inc()
print(C.count)
找 Bug静态方法没有self参数,不能访问实例属性。
class C: @staticmethod def f(): print(self.x)
填空题填写空白处的代码
class Date: @ def from_string(cls, s): y, m, d = map(int, s.split("-")) return cls(y, m, d)
选择题

工厂方法通常用?

选择题

@classmethod 装饰的类方法,第一个参数通常叫 cls,它接收的是啥?

资深工程师加餐

底层原理 · 大厂视角 · 工程经验,点卡片展开

list 底层是一段连续的指针数组,容量不够时整体扩容(CPython 约按 1.125 倍)。因此按下标取元素是 O(1),末尾 append 均摊 O(1),但在头部 insert(0,…) 或 pop(0) 要搬动全部元素、是 O(n)。dict/set 基于哈希表,平均查找 O(1) 但更耗内存。选对数据结构,往往比抠语法更影响性能。

挑战任务

方法类型挑战

简单+50 XP

用类方法实现User的多种创建方式。

方法类型挑战
2 个测试用例

课后作业

配置类

中等+20 XP

用类方法从字典创建Config对象。

配置类
1 个测试用例