類變量和實例之間的區別

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/zh-hk/n/128378.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
RJZ11的頭像RJZ11
上一篇 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

發表回復

登錄後才能評論