什麼是 Python 中的自我:真實世界的例子

什麼是 Python 中的自我:真實世界的例子

在用 Python 編寫類時,您可能經常會遇到這個術語'self.'這是初學者在深入了解 Python 編程語言中面向對象的特性時必須理解的一個重要概念。

參數self指的是類的當前實例。您可以使用它來訪問屬於該類的屬性和方法。

在本 Python 教程中,我們將探討變量如何self在 Python 類中發揮關鍵作用。我們還將向您展示如何通過使用self.

目錄

在 Python 中理解自我

Python 是一種面向對象編程 (OOP)語言,它嚴重依賴於類和對象。因此,在深入研究self參數之前,我們必須首先了解什麼是面向對象編程。

Python 中的面向對象編程

什麼是 Python 中的自我:真實世界的例子粉筆寫作——OOP,面向對象編程“data-medium-file="https://blog.enterprisedna.co/wp-content/uploads/2023/04/istockphoto-147480805-612x612-1-300x200.jpg"data- large-file="https://blog.enterprisedna.co/wp-content/uploads/2023/04/istockphoto-147480805-612x612-1.jpg" decoding="async" loading="lazy" src="https: //blog.enterprisedna.co/wp-content/uploads/2023/04/istockphoto-147480805-612x612-1.jpg" alt="Python 中的 Self 是什麼。" class="wp-image-206807" width=" 709" height="472" srcset="https://blog.enterprisedna.co/wp-content/uploads/2023/04/istockphoto-147480805-612x612-1.jpg 612w, https://blog.enterprisedna.co /wp-content/uploads/2023/04/istockphoto-147480805-612x612-1-300x200.jpg 300w,https://blog.enterprisedna。co/wp-content/uploads/2023/04/istockphoto-147480805-612x612-1-560x372.jpg 560w" sizes="(max-width: 709px) 100vw, 709px">

面向對象的編程幫助程序員通過使用類和對象來模擬現實世界的概念和關係。這導致代碼更加結構化、可重用和可擴展。

將類視為用於創建具有預定義屬性和方法的對象的模板。此外,對像是類的實例,它存儲自己的屬性值並可以訪問類函數。

這兩個概念是許多Python應用程序中的重要構建塊。您可以在有關如何使用 Python Faker 庫輕鬆創建數據的視頻中看到類和對象的工作。

Python Self 的作用

Self 是對 Python 中類實例的引用。它允許您在類的範圍內訪問和修改類的屬性和方法。

self 下面是關於在Python中使用的幾個要點:

  • Self不是 Python 語法中的保留關鍵字。您可以使用其他名稱來標識類實例,但這self是 Python 程序員使用最廣泛和接受的約定。
  • Self在實例方法中用作第一個參數以引用類的當前實例。
  • 您可以使用它self來區分實例屬性和局部變量,從而使您的代碼更具可讀性並減少錯誤。
  • 調用實例方法時,Python 會自動將實例作為第一個參數傳遞。
  • 您必須在您的類中的構造函數和所有其他後續函數構造函數中聲明該self參數。__init__() 如果不這樣做,將導致您的程序拋出一個typeerror.

    您可以在下面看到此錯誤的示例:

class Person: def __init__(self): print('welcome') def show_person(): print('I love pandas.') a = Person() b = a.show_person() Traceback (most recent call last): File "person.py", line 10, in trill = b.show_person() ^^^^^^^^^^^^^^^^^^ TypeError: Person.show_person() takes 0 positional arguments but 1 was given

注意:self 您可以通過使用 Python 3 提供的靜態方法功能來避免在函數中使用參數。我們將在後面的部分中對此進行更詳細的介紹。

與自我合作

什麼是 Python 中的自我:真實世界的例子

學習如何使用self 對於在 Python 中構建類非常重要。在本節中,您將學習如何self 在不同的場景中使用類和對象。

使用“__init__()”初始化對象

什麼是 Python 中的自我:真實世界的例子

當創建類的新實例時,__init__() 調用該方法來初始化對象的屬性。該__init__() 方法是類構造函數,它將參數self 作為其第一個參數。

參數self在此方法中用於將實例屬性與給定參數相關聯。

這是一個例子:

class Person: def __init__(self, name, age): self.name = name self.age = age person1 = Person("Alice", 30)

在此示例中,該方法在對像初始化期間將、和作為參數。參數引用類實例,允許您為正在創建的特定對象設置和屬性。 init selfnameageself nameage

在方法中使用 Self

在類中定義實例方法時,應將其self 作為第一個參數包含在內。這允許您訪問類中的實例屬性和其他方法。

讓我們擴展前面的例子:

class Person: def __init__(self, name, age): self.name = name self.age = age def introduce(self): print("Hello, my name is " + self.name + " and I'm " + str(self.age) + " years old.") person1 = Person("Alice", 30) person1.introduce()

在此示例中,該introduce()方法包括self作為其第一個參數。這使您能夠訪問對象的名稱和年齡屬性並創建個性化介紹。

在代碼中調用方法時,不需要 self 顯式傳遞參數。Python 會自動處理它。

self通過遵循這些準則並理解Python的用途,初學者可以有效使用類和對象。這讓他們可以創建易於閱讀和維護的結構良好的代碼。

常見的自我用例

什麼是 Python 中的自我:真實世界的例子

您可以通過多種方式在 Python 代碼中使用關鍵字。通過了解這些用例,您將能夠在您的程序中有效地利用它們。 self self

讓我們看看其中的一些:

訪問類屬性

的一個主要用途self是訪問類中的實例屬性。實例屬性特定於從類創建的對象並存儲對象的數據。

Usingself允許您在類方法中操作或訪問這些屬性。讓我們看一個例子:

class Dog: def __init__(self, name, age): self.name = name self.age = age def display_name(self): print("The dog's name is:", self.name)

在這個例子中,我們曾經self 在方法中訪問 Dog 對象的 name 屬性display_name

調用類方法

的另一個常見用例self是從實例方法中調用其他類方法。這使您可以重用代碼、降低複雜性並提高可讀性。

self在引用其他方法時必須使用它,因為它確保為特定實例調用正確的方法。考慮以下示例:

class Bird: def __init__(self, species, color): self.species = species self.color = color def show_species(self): print("The bird species is:", self.species) def show_info(self): self.show_species() print("The bird color is:", self.color)

在上面的示例中,我們使用從方法內部self調用方法。這使我們能夠在一次調用中顯示鳥類的種類和顏色。show_speciesshow_info

最後,記得在訪問實例屬性和調用類方法時使用self。了解這些用例後,您將能夠編寫更高效、更有條理的 Python 代碼。

最佳自我實踐

什麼是 Python 中的自我:真實世界的例子

在使用時,self,您需要遵循一些約定以避免代碼中出現問題和錯誤。這裡是其中的一些。

在哪裡使用自我

定義實例方法時,始終使用self參數作為第一個參數。這允許您訪問和修改對象的實例屬性並調用類中的其他實例方法。

self在 Python 中處理對象實例時使用它很重要。使用它可確保一致的行為並允許適當的對象封裝。

例如,考慮以下類:

class MyClass: def __init__(self, my_var): self.my_var = my_var

這裡,方法中使用了self參數__init__ 來初始化my_var 對象實例的屬性。這樣,就變成了一個特定於實例的屬性。 my_var

因此,可以在該類的其他方法中使用自引用來訪問和修改它。

自我命名約定

雖然self是 Python 中用於實例的常規名稱,但從技術上講,您可以使用任何您喜歡的名稱。但是,強烈建議您堅持使用 self 以便與更廣泛的 Python 社區保持清晰和一致。

使用不同的名稱可能會使那些閱讀和使用您的代碼的人感到困惑,尤其是當他們習慣於 Python 庫中的標準命名約定時。

不使用 Self 的地方

我們已經知道self參數提供了對對象實例的訪問。但是,在某些情況下,類中的某些函數可能不需要訪問對象實例。

在這種情況下,不需要 self 參數。所以,Python 提供了繞過 self 參數的靜態方法特性:

這是一個例子:

class Car: @staticmethod def print_car(): print('Vroom Vroom')

在上面的例子中,@staticmethod函數裝飾器覆蓋了self方法中的參數要求。這樣,即使沒有對象實例傳入,該函數仍會運行。

結論

什麼是 Python 中的自我:真實世界的例子

綜上所述,Python 中的 self 參數指的是一個類的實例,允許你訪問它的屬性和方法。作為 Python 開發人員,了解 self 的用途及其在類和對像中的用途非常重要。

通過在代碼中始終如一地使用 self,可以提高可讀性和可維護性,從而提高工作的整體質量。

另外,請記住,雖然您可能會在 Python 中看到頻繁使用的術語 "self",但它並不是 Python 的保留關鍵字。這不同於Javascript 和 Java等編程語言,其中"this" 是保留關鍵字。

您可以隨意命名類方法中的第一個參數;self只是首選的約定。

self 是 Python 中的關鍵字嗎? 

有一個問題始終困擾著 Python 程式設計師。 self其實是Python中的關鍵字嗎? 

與 C++ 等其他程式語言(其中 self 被視為關鍵字)不同,在 Python 中,它是程式設計師傾向於遵循的約定。它基本上是方法定義中的參數。不過,您可以使用任何其他名稱來代替自己,例如 另一個 或 我 或方法的第一個參數的任何其他內容。大多數人建議它的另一個原因是它增強了程式碼的可讀性。 

讓我們看一個例子來理解它: 

class myClass: def show(another): print(“another 用來代替 self”)  

如果將此程式碼與 Python 類別自建構函數的程式碼進行比較,您會發現這裡我們使用了名稱 另一個  。現在讓我們建立此類的物件並查看輸出: 自己的地點

物件 = myClass()   object.show()

您可以看到,即使我們使用其他名稱代替 self 變量,程式也能正常運作。它的運作方式與 self 變數完全相同。 


什麼是 Python 中的自我:真實世界的例子

什麼是 Python 中的自我:真實世界的例子

什麼是 Python 中的自我:真實世界的例子

如何在 R 中保存和加載 RDS 文件

如何在 R 中保存和加載 RDS 文件

您將學習如何在 R 中保存和加載 .rds 文件中的對象。本博客還將介紹如何將對像從 R 導入 LuckyTemplates。

回顧前 N 個工作日——DAX 編碼語言解決方案

回顧前 N 個工作日——DAX 編碼語言解決方案

在此 DAX 編碼語言教程中,了解如何使用 GENERATE 函數以及如何動態更改度量標題。

在 LuckyTemplates 中使用多線程動態視覺技術展示見解

在 LuckyTemplates 中使用多線程動態視覺技術展示見解

本教程將介紹如何使用多線程動態可視化技術從報告中的動態數據可視化中創建見解。

LuckyTemplates 篩選上下文簡介

LuckyTemplates 篩選上下文簡介

在本文中,我將貫穿過濾器上下文。篩選上下文是任何 LuckyTemplates 用戶最初應該了解的主要主題之一。

使用 LuckyTemplates 在線服務中的應用程序的最佳技巧

使用 LuckyTemplates 在線服務中的應用程序的最佳技巧

我想展示 LuckyTemplates Apps 在線服務如何幫助管理從各種來源生成的不同報告和見解。

隨著時間的推移分析利潤率變化——使用 LuckyTemplates 和 DAX 進行分析

隨著時間的推移分析利潤率變化——使用 LuckyTemplates 和 DAX 進行分析

了解如何在 LuckyTemplates 中使用度量分支和組合 DAX 公式等技術計算利潤率變化。

DAX Studio 中數據緩存的物化想法

DAX Studio 中數據緩存的物化想法

本教程將討論數據緩存物化的想法,以及它們如何影響 DAX 在提供結果時的性能。

使用 LuckyTemplates 進行業務報告

使用 LuckyTemplates 進行業務報告

如果直到現在你還在使用 Excel,那麼現在是開始使用 LuckyTemplates 來滿足你的業務報告需求的最佳時機。

什麼是 LuckyTemplates 網關?所有你必須知道的

什麼是 LuckyTemplates 網關?所有你必須知道的

什麼是 LuckyTemplates 網關?所有你必須知道的