class method 中 self 的含义
本质
以下面的类和方法为例:
class A: def f(self, x): print(x)
self
本质就是A
的一个实例;# 定义 a = A() # 创建 A 的一个实例 # 调用 a.f(1) # 1
a.f(1)
实际上就是A.f(a, 1)
的语法糖;
使用场景
动态修改成员函数
如果是将新函数赋值给类,那么需要预留第一个位置给
slef
;# 定义一个新的 f def new_f(self: A, x): print(x + 1) A.f = new_f # 将新函数赋值给类 a.f(x) # 2
如果是将新函数赋值给类的实例,那么需要就需要去掉第一个位置的参数;
# 定义一个新的 f def new_f(x): print(x + 1) a.f = new_f # 将新函数赋值给类的实例 a.f(x) # 2
参考
Last updated