类变量与实例变量的区别

17 Mar 2025 | 6 分钟阅读

Python 中的变量

面向对象编程允许开发人员在类级别或实例级别使用变量。变量是代表程序中正在使用的值的必要符号。

类级别的变量称为类变量,而实例级别的变量称为实例变量

当我们期望变量在各个实例之间保持一致,或者需要初始化变量时,可以将该变量定义在类级别。当我们期望变量在各个实例之间发生显著变化时,可以将该变量定义在实例级别。

软件开发中的一个重要原则是DRY原则,即Don't Repeat Yourself(不要重复自己)。该原则侧重于限制代码中的复制粘贴,而面向对象编程遵守DRY原则,因为它减少了冗余。

在本教程中,我们将通过Python 编程语言了解面向对象编程中的类变量和实例变量。我们还将讨论这两种变量之间的基本区别。

那么,让我们开始吧。

理解类变量

类变量在类定义内部声明。由于这些变量属于类本身,因此所有类的实例都共享它们。因此,除非我们使用类变量来初始化变量,否则它们通常对于每个实例都具有相同的值。

按照惯例,类变量定义在所有方法之外,通常放在类头部下方,构造函数和其它函数方法之前。

让我们看一个类变量的以下语法。

语法

在上面的代码片段中,“var”变量被赋予了“xyz”值。

我们可以定义一个名为“Class_name”类的对象(我们称之为“myObj”),并通过点符号打印该变量。

语法

让我们来看一个基于类变量概念的示例。

示例

输出

Name of the Animal: Lion

说明

在上面的代码片段中,我们将一个类定义为“Animal”并声明了类变量。然后,我们使用 my_Animal 对象实例化该类,并打印最终值给用户。结果,程序返回了类变量的值。

让我们尝试向类添加多个类变量并打印它们的值。

示例

输出

Name of the Animal: Lion
This Animal is found in: Jungle
This Animal is a: Carnivore
Population of this Animal: 20000 approx. 

说明

在上面的代码片段中,我们定义了一个类并声明了一些变量。然后,我们实例化了该类并打印了所需的用户输出。我们可以看到,这些类变量可以包含 Python 中可用的任何数据类型。如上面的程序所示,我们有字符串和一个整数。

此外,我们还可以注意到 myAnimal 对象可以访问类中的所有变量,并在执行程序时打印它们。

类变量使我们能够在类定义时定义变量。这些变量及其对应的值随后可供类的所有对象访问。

理解实例变量

属于类实例的变量称为实例变量。这句话的意思是,对于类的每个实例或对象,实例变量是不同的。

与类变量不同,实例变量定义在函数内部。

下面显示了使用实例变量的语法。

语法

在上面的代码片段中,var1 和 var2 是实例变量。

让我们来看一个基于实例变量的示例。

示例

输出

Roll Number of the Student: 102
Name of the Student: Sam
Age of the Student: 13

说明

在上面的代码片段中,我们定义了一个 Student 类,并在构造函数方法中作为参数传递了 id、nameage 等变量。然后,我们实例化了该类,并为用户打印了实例变量的值。

结果,我们将获得一个由为 dBase 实例初始化的变量值组成的集合。

实例变量归类对象所有,使开发人员能够在分配给这些变量的每个实例中存储不同的值。

理解类变量和实例变量之间的区别

既然我们已经理解了这两种变量的基本概念以及它们如何在类中使用,那么让我们来理解类变量实例变量的区别。这两种变量之间的主要区别如下表所示:

序号。类变量实例变量
1类变量是为类定义特定属性或特征的变量。实例变量是其值指定给实例并在不同实例之间共享的变量。
2我们可以与类及其子类共享这些变量。我们不能在类之间共享这些变量。然而,它们只适用于特定的类。
3即使类中没有实例对象存在,它通常也为类的每个实例支持一个共享值。它通常为类所需的数据存储内存。
4它通常在程序执行开始时定义。它通常在创建类的实例时定义。
5它通常会保留值直到程序结束。它通常会保留值,直到对象存在。
6它只有一个类变量的副本,因此它在多个类对象之间共享。它有多个副本,因此每个对象都有其实例变量的副本。
7我们可以通过类名调用来访问这些变量。我们可以通过在类中直接调用变量名来访问这些变量。
8我们必须使用 static 关键字声明这些变量。我们必须在不使用 static 关键字的情况下声明这些变量。
9通过一个对象对这些变量进行的任何更改都将在另一个对象中得到反映。通过一个对象对这些变量进行的任何更改都不会在另一个对象中得到反映。

下一个主题Python 中的完美数