返回

打通编程任督二脉之Python面向对象中的类变量,实例变量

前端

什么是类变量和实例变量

在Python中,变量可以分为两类:类变量和实例变量。类变量是属于类的变量,而实例变量是属于对象的变量。

类变量在类中定义,并由所有该类的实例共享。这意味着,如果修改了一个实例的类变量,那么该类的所有其他实例的类变量也会被修改。

实例变量在实例中定义,并且只属于该实例。这意味着,如果修改了一个实例的实例变量,那么该类的其他实例的实例变量不会受到影响。

理解类变量和实例变量的比喻

为了更好地理解类变量和实例变量,我们可以使用一个简单的比喻。

想象一下,你是一个学校的老师。你有一个学生名叫小明。小明的身高是1米50。

小明的身高是一个实例变量,因为它只属于小明这个实例。如果小明长高了,那么只有小明的身高会发生变化,其他学生的身高不会受到影响。

现在,假设你有一个班级,班上所有的学生都是1米50。那么,班上所有学生的身高都可以看作是一个类变量。如果班上所有学生的身高都长高了,那么班上所有学生的身高都会发生变化。

类变量和实例变量的例子

为了进一步理解类变量和实例变量,让我们来看一个简单的例子。

class Student:
    # 类变量
    school_name = "清华大学"

    # 实例变量
    def __init__(self, name, age):
        self.name = name
        self.age = age

# 创建两个学生实例
student1 = Student("小明", 18)
student2 = Student("小红", 19)

# 修改student1的实例变量
student1.name = "小强"

# 打印student1和student2的变量
print(student1.name, student1.age, student1.school_name)
print(student2.name, student2.age, student2.school_name)

在这个例子中,school_name是一个类变量,它属于Student类。nameage是实例变量,它们属于student1student2这两个实例。

当我们修改student1name变量时,只有student1name变量会发生变化,student2name变量不会受到影响。

总结

类变量和实例变量是Python中面向对象编程中的两个重要概念。类变量是属于类的变量,而实例变量是属于对象的变量。类变量由所有该类的实例共享,而实例变量只属于该实例。

理解类变量和实例变量对于理解Python的面向对象编程至关重要。通过本文的讲解,相信你已经对类变量和实例变量有了更深入的理解。