Python 进阶
类方法与静态方法
区分类方法、实例方法和静态方法
- @classmethod 类方法
- @staticmethod 静态方法
- 选择合适的方法类型
三种方法对比
示例代码(可运行)
Python 0%
ℹ️何时用哪种
实例方法:操作实例数据。类方法:操作类或创建实例(工厂方法)。静态方法:逻辑上属于类但不需要类/实例数据的工具函数。
预测输出
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的多种创建方式。
方法类型挑战
Python 0%
2 个测试用例
课后作业
配置类
中等+20 XP
用类方法从字典创建Config对象。
配置类
Python 0%
1 个测试用例