self和cls
self 与 cls 的概念类似,但它专门用于实例方法。当我们提到“self 表示调用该方法的实例本身”,意味着 self 指向类的具体实例,而不是类本身。通过 self,你可以访问实例的属性和方法。
1. self
-
指向实例对象:
self是类中方法的第一个参数,用于引用该方法所属的实例对象。- 使用
self可以访问实例的属性和方法。
-
用法:
- 在实例方法中,第一个参数通常命名为
self(可以用其他名字,但不推荐)。 - 通过
self可以操作与特定实例关联的数据。
- 在实例方法中,第一个参数通常命名为
-
示例:
class Example: def __init__(self, value): self.value = value # 使用 self 指向实例的属性 def display(self): print(f"Value: {self.value}") # self 调用实例的属性 obj = Example(10) obj.display() # 输出: Value: 10
2. cls
-
指向类本身:
cls是类方法的第一个参数,用于引用类本身,而不是类的实例。- 它使我们可以访问类级别的数据或方法(比如类变量、类方法)。
-
用法:
- 在定义类方法时,需要使用
@classmethod装饰器,并以cls作为第一个参数。 - 通过
cls可以操作类的属性和方法。
- 在定义类方法时,需要使用
-
示例:
class Example: class_variable = "I am a class variable" @classmethod def show_class_variable(cls): print(cls.class_variable) # 使用 cls 访问类变量 Example.show_class_variable() # 输出: I am a class variable
主要区别
| 特性 | self |
cls |
|---|---|---|
| 指代对象 | 实例对象 | 类本身 |
| 修饰方法 | 普通实例方法(默认) | 使用 @classmethod |
| 调用属性 | 操作实例属性或实例方法 | 操作类属性或类方法 |
| 使用场景 | 实例相关操作(特定实例) | 类相关操作(所有实例共享) |
总结
- 如果你要处理某个实例的属性和方法,使用
self。 - 如果你要处理类本身的属性和方法,使用
cls。

浙公网安备 33010602011771号