概述
1. 简单的类比
想象一个 蛋糕模具工厂。
- 模具 (cls):代表整个蛋糕模具的设计蓝图。它定义了所有蛋糕的共同特征(例如形状、大小)。
- 单个模具 (self):代表从模具中制作出的一个具体蛋糕。每个蛋糕可以有自己独特的装饰(例如奶油、水果),但它们都遵循模具的基本设计。
2. 核心概念
-
cls
:- 代表 类本身。
- 在 类方法 中使用。
- 用于访问和修改 类级别的属性(属于整个类的属性,所有实例共享)。
-
self
:- 代表 类的实例(即对象)。
- 在 实例方法 中使用。
- 用于访问和修改 实例级别的属性(属于特定对象的属性)。
3. 代码示例
class Cake:
frosting = "vanilla" # 类属性
def __init__(self, fruit):
self.fruit = fruit # 实例属性
@classmethod
def change_frosting(cls, new_frosting):
cls.frosting = new_frosting
def describe(self):
print(f"This cake has {self.fruit} and {self.frosting} frosting.")
# 创建蛋糕实例
cake1 = Cake("strawberries")
cake2 = Cake("blueberries")
# 访问和修改属性
print(Cake.frosting) # 输出: vanilla
cake1.describe() # 输出: This cake has strawberries and vanilla frosting.
# 修改类属性
Cake.change_frosting("chocolate")
print(Cake.frosting) # 输出: chocolate
cake2.describe() # 输出: This cake has blueberries and chocolate frosting.