类变量和实例之间的区别

Python 中的变量

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

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

每当我们期望变量在实例之间保持一致时,或者每当我们必须初始化一个变量时,就可以在类级别定义该变量。每当我们期待那些将在实例间发生显著变化的变量时,就可以在实例级定义该变量。

软件开发的各种原则中有 DRY 原则,缩写为不要重复自己。这一原则侧重于代码中的限制性复制,面向对象编程遵循 DRY 原则,因为它减少了冗余。

在接下来的教程中,我们将了解在 Python 编程语言中面向对象编程中的类以及实例变量。我们还将讨论这两个变量之间的根本区别。

所以,让我们开始吧。

理解类变量

类变量在类的构造中声明。由于这些变量归类本身所有,因此它们由所有类实例共享。因此,它们通常对每个实例都有相同的值,除非我们利用类变量来初始化变量。

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

让我们考虑以下类变量的语法。

语法:


# defining the class
class Class_name:
    # declaring the variable in the class
    var = "xyz"

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

我们可以定义类名类的一个对象(我们称之为“ myObj ”),并借助点符号打印变量:

语法:


# defining the class
class Class_name:
    # declaring the variable in the class
    var = "xyz"
# instantiating the class
myObj = Class_name()

让我们考虑以下基于类变量概念的例子。

示例:


# defining a class
class Animal:
    # declaring the class variable
    Terrestrial = "Lion"
# instantiating the class
my_Animal = Animal()
# printing the values
print("Name of the Animal:", my_Animal.Terrestrial)

输出:

Name of the Animal: Lion

说明:

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

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

示例:


# defining a class
class Animal:
    # declaring some class variables
    Terrestrial = "Lion"
    Location = "Jungle"
    Type = "Carnivore"
    Population = 20000
# instantiating the class
my_Animal = Animal()
# printing the values
print("Name of the Animal:", my_Animal.Terrestrial)
print("This Animal is found in:", my_Animal.Location)
print("This Animal is a:", my_Animal.Type)
print("Population of this Animal:", my_Animal.Population, "approx.")

输出:

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

说明:

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

而且,我们还可以观察到 myAnimal 的对象对于类中的所有变量都是可访问的,并在我们执行程序时打印出来。

类变量使我们能够在构造类时定义变量。然后,该类的每个对象都可以访问这些变量及其对应的值。

理解实例变量

类实例拥有的变量称为实例变量。这个语句意味着对于一个类的每个实例或对象,实例变量是不同的。

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

使用实例变量的语法如下所示。

语法:


# defining the class
class Class_name:
    # using the initializing function
    def __init__(self, var1, var2):
        self.var1 = var1
        self.var2 = var2

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

让我们考虑一个基于实例变量的例子

示例:


# defining the class
class Student:
    # using the initializing function
    def __init__(self, id, name, age):
        self.id = id
        self.name = name
        self.age = age

#  instantiating the class
dBase = Student(102, "Sam", 13)
# printing the required values
print("Roll Number of the Student:", dBase.id)
print("Name of the Student:", dBase.name)
print("Age of the Student:", dBase.age)

输出:

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

说明:

在上面的代码片段中,我们定义了一个学生类,并将一些变量定义为 id、名称和年龄,作为构造器方法中的参数传递。然后,我们实例化了这个类,并为用户打印了实例变量的值。

因此,我们将获得为数据库实例初始化的变量的值。

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

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

既然我们已经理解了变量的基本概念以及这些变量在类中的使用方式,那么让我们理解类变量与实例变量的不同之处。这两个变量之间的主要区别如下表所示:

| 南号码 | 类变量 | 实例变量 |
| one | 类变量是定义类的特定属性的变量。 | 实例变量是一个变量,其值被指定给实例并在不同的实例之间共享。 |
| Two | 我们可以在类及其子类之间共享这些变量。 | 我们不能在类之间共享这些变量。然而,它们只适合特定的类别。 |
| three | 它通常支持类的每个实例都有一个共享值,即使类中没有实例对象。 | 它通常为类所需的数据存储内存。 |
| four | 它通常是在我们开始执行程序时定义的。 | 它通常是在我们创建类的实例时定义的。 |
| five | 它通常会重新收集这些值,直到程序结束。 | 只要对象存在,它通常就会重新收集值。 |
| six | 它只有一个类变量的副本,所以它在不同的类对象之间共享。 | 它有多个副本,因此每个对象都有其实例变量的副本。 |
| seven | 我们可以通过用类名调用来访问这些变量。 | 我们可以通过在类中调用变量名来直接访问这些变量。 |
| eight | 我们必须借助静态键盘来声明这些变量。 | 我们必须在不使用 static 关键字的情况下声明这些变量。 |
| nine | 我们通过一个对象对这些变量所做的任何更改都将被复制到另一个对象中。 | 我们通过一个对象对这些变量所做的任何更改都不会在另一个对象中复制。 |


原创文章,作者:RJZ11,如若转载,请注明出处:https://www.506064.com/n/128378.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
RJZ11RJZ11
上一篇 2024-10-03 23:24
下一篇 2024-10-03 23:25

相关推荐

  • Python中new和init的区别

    new和init都是Python中常用的魔法方法,它们分别负责对象的创建和初始化,本文将从多个角度详细阐述它们的区别。 一、创建对象 new方法是用来创建一个对象的,它是一个类级别…

    编程 2025-04-29
  • int类型变量的细节与注意事项

    本文将从 int 类型变量的定义、声明、初始化、范围、运算和类型转换等方面,对 int 类型变量进行详细阐述和讲解,帮助读者更好地掌握和应用 int 变量。 一、定义与声明 int…

    编程 2025-04-29
  • Python生成随机数的应用和实例

    本文将向您介绍如何使用Python生成50个60到100之间的随机数,并将列举使用随机数的几个实际应用场景。 一、生成随机数的代码示例 import random # 生成50个6…

    编程 2025-04-29
  • Sublime Test与Python的区别

    Sublime Text是一款流行的文本编辑器,而Python是一种广泛使用的编程语言。虽然Sublime Text可以用于编写Python代码,但它们之间有很多不同之处。接下来从…

    编程 2025-04-29
  • Python input参数变量用法介绍

    本文将从多个方面对Python input括号里参数变量进行阐述与详解,并提供相应的代码示例。 一、基本介绍 Python input()函数用于获取用户输入。当程序运行到inpu…

    编程 2025-04-29
  • Shell脚本与Python脚本的区别

    本文将从多个方面对Shell脚本与Python脚本的区别做详细的阐述。 一、语法差异 Shell脚本和Python脚本的语法存在明显差异。 Shell脚本是一种基于字符命令行的语言…

    编程 2025-04-29
  • Python中while语句和for语句的区别

    while语句和for语句是Python中两种常见的循环语句,它们都可以用于重复执行一段代码。然而,它们的语法和适用场景有所不同。本文将从多个方面详细阐述Python中while语…

    编程 2025-04-29
  • Python匿名变量的使用方法

    Python中的匿名变量是指使用“_”来代替变量名的特殊变量。这篇文章将从多个方面介绍匿名变量的使用方法。 一、作为占位符 匿名变量通常用作占位符,用于代替一个不需要使用的变量。例…

    编程 2025-04-29
  • Web程序和桌面程序的区别

    Web程序和桌面程序都是进行软件开发的方式,但是它们之间存在很大的区别。本文将从多角度进行阐述。 一、运行方式 Web程序运行于互联网上,用户可以通过使用浏览器来访问它。而桌面程序…

    编程 2025-04-29
  • Python变量在内存中的存储

    该文章将从多个方面对Python变量在内存中的存储进行详细阐述,包括变量的声明和赋值、变量的引用和指向、内存地址的变化、内存管理机制等。 一、声明和赋值 在Python中,变量声明…

    编程 2025-04-29

发表回复

登录后才能评论