一。实例变量
实例变量是隶属于类的每个实例对象的独特属性。它们在实例化过程中被初始化,并且每个实例都拥有自己独立的一份副本。这意味着不同实例的同名实例变量可以存储不同的值,彼此之间互不干扰。
以 Dog 类为例,name、color 和 weight 就是典型的实例变量:
class Dog:
def __init__(self, name, color, weight):
self.name = name
self.color = color
self.weight = weight
当我们创建 d1 = Dog('大黄', '黄色', 10) 和 d2 = Dog('旺财', '黑色', 8) 两个实例时,d1 的 name 为大黄,color 为黄色,weight 为 10;而 d2 的 name 是旺财,color 是黑色,weight 为 8。这些实例变量存储了每个 Dog 实例特有的信息,使得每个实例都能够在程序中被清晰地识别和区分开来。
二。类变量
类变量则是与整个类相关联的变量,它被类的所有实例所共享。无论创建了多少个类的实例,类变量在内存中只有一份副本,并且对类变量的修改会影响到类的所有实例。
在 Dog 类中,dogbook 就是一个类变量:
class Dog:
dogbook = {'黄色': 30, '黑色': 20, '白色': 0}
def __init__(self, name, color, weight):
self.name = name
self.color = color
self.weight = weight
这个 dogbook 可以用于记录不同颜色狗的数量信息。所有的 Dog 实例都可以访问这个类变量,并且如果通过某个实例或者类本身对 dogbook 进行修改,例如增加某种颜色狗的数量,那么这个修改将会在整个类的范围内生效,其他实例看到的 dogbook 也会是更新后的状态。
三。实例方法
实例方法是面向对象编程中最为常见且基础的方法类型。它的标志性特征是第一个参数必须为 self,这个 self 并非关键字,只是一种约定俗成的命名方式,其代表的是类的实例对象自身。通过 self,实例方法能够深入到实例对象的内部,自由地访问和灵活地操作实例对象所特有的属性。
以一个简单的 Dog 类为例,我们可以清晰地看到实例方法的运作机制:
class Dog:
def __init__(self, name, color, weight):
self.name = name
self.color = color
.weight = weight
():
()
d1 = Dog(, , )
d1.bark()


