类是一个蓝图或模板,定义了结构(字段)和行为(方法)。对象(或实例)是从该蓝图构建的具体事物,在内存中有自己的值。
蓝图 vs 实例
text
class Car ← ONE definition (the blueprint)
│ fields: color, speed
│ methods: accelerate()
▼
new Car("red") ← many OBJECTS (instances), each with its own state
new Car("blue")
在代码中
python
class Car:
def __init__(self, color):
self.color = color # per-instance state
.speed =
():
.speed +=
a = Car()
b = Car()
a.accelerate()
(a.speed, b.speed)
(a.color b.color)
类存在一次;您可以从它创建许多对象,每个对象都持有独立的数据。
常见误解
- 直到您实例化类之前,类本身不会占用任何per-instance内存。
- "类变量"(在实例间共享)与"实例变量"(每个对象)不同——混淆它们会导致共享状态错误。
为什么这很重要
这是面向对象编程中最基本的区别:所有其他概念都建立在一个类产生许多独立对象这一事实之上。
理解错误会导致意外的共享状态——例如一个可变的默认值或类级列表,每个实例都会意外地共享它。
