在 Python 中,类变量和实例变量的访问方式有所不同,下面分别具体说明:

1. 类变量

类变量是属于类本身的变量,被所有实例共享。可以通过类名实例对象来访问。

python

运行

class MyClass:
    # 类变量
    class_var = "我是类变量"

# 通过类名访问
print(MyClass.class_var)  # 输出: 我是类变量

# 创建实例
obj = MyClass()
# 通过实例对象访问
print(obj.class_var)      # 输出: 我是类变量

2. 实例变量

实例变量是属于具体实例的变量,每个实例的实例变量可能不同。只能通过实例对象来访问。

python

运行

class MyClass:
    def __init__(self):
        # 实例变量(在 __init__ 方法中定义)
        self.instance_var = "我是实例变量"

# 创建实例
obj = MyClass()
# 通过实例对象访问
print(obj.instance_var)  # 输出: 我是实例变量

3. 混合使用示例

python

运行

class Person:
    # 类变量:所有 Person 实例共享
    species = "人类"
    
    def __init__(self, name):
        # 实例变量:每个实例独有的属性
        self.name = name  # name 是实例变量

# 访问类变量
print(Person.species)  # 输出: 人类

# 创建实例
p1 = Person("张三")
p2 = Person("李四")

# 访问实例变量
print(p1.name)  # 输出: 张三
print(p2.name)  # 输出: 李四

# 通过实例访问类变量
print(p1.species)  # 输出: 人类
print(p2.species)  # 输出: 人类

注意点:

  • 尽量通过类名访问类变量,这样更清晰地表明这是类级别的变量。
  • 如果通过实例修改类变量,实际上会给该实例创建一个同名的实例变量,不会影响其他实例和类本身:

    python

    运行

    p1.species = "外星人"  # 给 p1 创建了实例变量 species
    print(p1.species)      # 输出: 外星人(实例变量)
    print(Person.species)  # 输出: 人类(类变量未变)
    print(p2.species)      # 输出: 人类(其他实例仍访问类变量)
Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐