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