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