欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python方法中self和parent參數(shù)用法詳解

 更新時間:2025年04月18日 10:10:33   作者:泡沫o0  
大家好!今天我們來聊一個 Python 中常見但可能讓人困惑的話題:方法參數(shù)里的 self 和 parent,在這篇博客中,我會分三個章節(jié)逐步講解它們的含義、作用和實際應(yīng)用,帶你徹底搞懂它們,需要的朋友可以參考下

Python 方法中的 self 和 parent 參數(shù)用法

大家好!今天我們來聊一個 Python 中常見但可能讓人困惑的話題:方法參數(shù)里的 self 和 parent。如果你是 Python 新手,或者對這兩者感到疑惑,別擔(dān)心!在這篇博客中,我會分三個章節(jié)逐步講解它們的含義、作用和實際應(yīng)用,帶你徹底搞懂它們。讓我們開始吧!

第一章:揭秘 self —— 實例方法的必備參數(shù)

在 Python 的類中,你會經(jīng)常看到方法定義時第一個參數(shù)是 self,比如下面這個例子:

class Dog:
    def __init__(self, name):
        self.name = name

    def bark(self):
        print(f"{self.name} says woof!")

調(diào)用時是這樣的:

my_dog = Dog("Buddy")
my_dog.bark()  # 輸出: Buddy says woof!

self 是什么?

簡單來說,self 是當(dāng)前實例的引用。當(dāng)你創(chuàng)建一個對象(比如 my_dog),然后調(diào)用它的方法時,self 就代表這個對象本身。它讓方法知道“我在操作哪個實例”。

為什么需要 self?

  • 區(qū)分實例:假如你創(chuàng)建了多個 Dog 對象(比如 Dog("Buddy") 和 Dog("Max")),每個對象都有自己的 name 屬性。self 確保方法操作的是正確的實例。比如調(diào)用 my_dog.bark() 時,self 指向 my_dog,所以輸出的名字是 "Buddy"。
  • 訪問屬性和方法:通過 self,方法可以訪問實例的屬性(self.name)或調(diào)用其他方法。這是 Python 實現(xiàn)對象狀態(tài)管理的基礎(chǔ)。
  • Python 的顯式設(shè)計:不像某些語言(比如 Java 的 this 是隱式的),Python 要求顯式寫出 self。這讓代碼更清晰,開發(fā)者能一眼看出方法是在操作實例。

工作原理

當(dāng)你調(diào)用 my_dog.bark() 時,Python 實際上在背后是這樣執(zhí)行的:

Dog.bark(my_dog)

這里,my_dog 被自動作為第一個參數(shù)傳給 bark 方法,而這個參數(shù)就是 self。

小結(jié)

self 是 Python 實例方法的必需參數(shù),它代表調(diào)用方法的實例本身。沒有 self,方法就無法知道自己在操作哪個對象的數(shù)據(jù)。理解了這一點,你就掌握了 Python 類的基礎(chǔ)!

第二章:探索 parent —— 自定義的層次參數(shù)

相比 self,parent 在 Python 方法中出現(xiàn)的頻率低得多,而且它并不是語言內(nèi)置的要求。那為什么有些代碼里會有 parent 參數(shù)呢?讓我們來看看。

parent 的常見場景

parent 通常是開發(fā)者根據(jù)程序設(shè)計需要引入的,表示一個對象與其“父對象”之間的關(guān)系。以下是幾種典型情況:

  1. 樹形結(jié)構(gòu)或?qū)哟侮P(guān)系
    在樹形結(jié)構(gòu)(如文件系統(tǒng)或家族樹)中,每個節(jié)點可能需要知道它的父節(jié)點。這時,parent 可以作為參數(shù)或?qū)傩猿霈F(xiàn)??催@個例子:

class TreeNode:
    def __init__(self, name, parent=None):
        self.name = name
        self.parent = parent  # 保存父節(jié)點引用
        self.children = []

    def add_child(self, child_name):
        child = TreeNode(child_name, parent=self)
        self.children.append(child)
  • 這里,每個 TreeNode 對象通過 parent 參數(shù)保存它的父節(jié)點,形成一個層次結(jié)構(gòu)。

  • 嵌套類
    當(dāng)一個類嵌套在另一個類中時,內(nèi)層類可能需要訪問外層類的實例。這時可以用 parent 參數(shù)傳遞外層實例:

class Outer:
    def __init__(self):
        self.inner = self.Inner(self)

    class Inner:
        def __init__(self, parent):
            self.parent = parent  # 保存外層實例
  • 繼承中的特殊用法(不常見)在繼承中,子類通常用 super() 訪問父類方法。但在某些自定義場景下,開發(fā)者可能用 parent 表示父類的實例。不過,這種用法不推薦,因為 super() 已經(jīng)足夠強大。

parent 和 self 的區(qū)別

  • self:始終指向當(dāng)前實例,是 Python 的內(nèi)置約定。
  • parent:指向另一個相關(guān)對象(通常是父對象),是開發(fā)者根據(jù)需求定義的。

小結(jié)

parent 不是 Python 的標準參數(shù),而是特定場景下的設(shè)計選擇。它常用于表示對象間的層次關(guān)系,比如樹形結(jié)構(gòu)或嵌套類。是否使用 parent,完全取決于你的程序邏輯。

第三章:實戰(zhàn)演練 —— 示例與最佳實踐

理論講完了,我們通過實際代碼來加深理解吧!

示例 1:使用 self 的簡單類

class Car:
    def __init__(self, make, model):
        self.make = make
        self.model = model

    def display_info(self):
        print(f"This car is a {self.make} {self.model}.")

# 使用
my_car = Car("Toyota", "Corolla")
my_car.display_info()  # 輸出: This car is a Toyota Corolla.

這里,self 讓 display_info 方法能訪問實例的 make 和 model 屬性。

示例 2:使用 parent 的樹形結(jié)構(gòu)

class TreeNode:
    def __init__(self, name, parent=None):
        self.name = name
        self.parent = parent
        self.children = []

    def add_child(self, child_name):
        child = TreeNode(child_name, parent=self)
        self.children.append(child)

    def display(self, level=0):
        print("  " * level + self.name)
        for child in self.children:
            child.display(level + 1)

# 使用
root = TreeNode("Root")
root.add_child("Child1")
root.add_child("Child2")
root.children[0].add_child("Grandchild1")
root.display()
# 輸出:
# Root
#   Child1
#     Grandchild1
#   Child2

在這個樹形結(jié)構(gòu)中,parent 參數(shù)幫助每個節(jié)點記住它的父節(jié)點,self 則用于管理每個節(jié)點的屬性和行為。

最佳實踐

  • 始終使用 self:在實例方法中,self 是必須的,別忘了寫!
  • 謹慎使用 parent:只有在需要明確層次關(guān)系時才用 parent,否則會讓代碼復(fù)雜化。
  • 保持清晰:命名要直觀,避免混淆 self 和 parent 的角色。

總結(jié)

  • self:Python 實例方法的靈魂,表示當(dāng)前實例,是訪問對象數(shù)據(jù)和行為的橋梁。
  • parent:自定義參數(shù),用于表示對象間的某種關(guān)系(通常是父子關(guān)系),在特定場景下很有用。

希望這篇博客能解開你對 self 和 parent 的疑惑!掌握了這些,你的 Python 面向?qū)ο缶幊虝弦粚訕恰?/p>

到此這篇關(guān)于Python方法中self和parent參數(shù)用法詳解的文章就介紹到這了,更多相關(guān)Python self和parent用法內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Python閉包與閉包陷阱舉例詳解

    Python閉包與閉包陷阱舉例詳解

    閉包并不只是一個Python中的概念,在函數(shù)式編程語言中應(yīng)用較為廣泛,下面這篇文章主要給大家介紹了關(guān)于Python閉包與閉包陷阱的相關(guān)資料,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下
    2023-01-01
  • Python?flask框架post接口調(diào)用示例

    Python?flask框架post接口調(diào)用示例

    這篇文章主要介紹了Python?flask框架post接口調(diào)用,結(jié)合實例形式分析了基于flask框架的post、get請求響應(yīng)及接口調(diào)用相關(guān)操作技巧,需要的朋友可以參考下
    2019-07-07
  • pytorch hook 鉤子函數(shù)的用法

    pytorch hook 鉤子函數(shù)的用法

    這篇文章主要介紹了pytorch hook 鉤子函數(shù)的用法,Hook 是 PyTorch 中一個十分有用的特性,使用后可以不必改變網(wǎng)絡(luò)輸入輸出的結(jié)構(gòu),方便地獲取、改變網(wǎng)絡(luò)中間層變量的值和梯度,下文詳細介紹需要的小伙伴可以參考一下
    2022-03-03
  • pyecharts如何旋轉(zhuǎn)折線圖的X軸標簽

    pyecharts如何旋轉(zhuǎn)折線圖的X軸標簽

    這篇文章主要介紹了pyecharts如何旋轉(zhuǎn)折線圖的X軸標簽,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-11-11
  • python之線程通過信號pyqtSignal刷新ui的方法

    python之線程通過信號pyqtSignal刷新ui的方法

    今天小編就為大家分享一篇python之線程通過信號pyqtSignal刷新ui的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-01-01
  • Unicode和Python的中文處理

    Unicode和Python的中文處理

    在Python語言中,Uincode字符串處理一直是一個容易讓人迷惑的問題。許多Python愛好者經(jīng)常因為搞不清Unicode、UTF-8還有其它許許多多的編碼之間的區(qū)別而大傷腦筋。本文將介紹Unicode和Python的中文處理的相關(guān)知識。下面跟著小編一起來看下吧
    2017-03-03
  • Python實現(xiàn)連接MySQL數(shù)據(jù)庫的常見方法總結(jié)

    Python實現(xiàn)連接MySQL數(shù)據(jù)庫的常見方法總結(jié)

    這篇文章主要為大家介紹了兩種Python中用來連接 MySQL 數(shù)據(jù)庫的方法,并且針對這兩種方法,我們還將對代碼進行封裝和優(yōu)化,提高程序的可讀性和健壯性,需要的可以收藏一下
    2023-05-05
  • 解決django框架model中外鍵不落實到數(shù)據(jù)庫問題

    解決django框架model中外鍵不落實到數(shù)據(jù)庫問題

    這篇文章主要介紹了解決django框架model中外鍵不落實到數(shù)據(jù)庫問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-05-05
  • 使用Pytorch實現(xiàn)Swish激活函數(shù)的示例詳解

    使用Pytorch實現(xiàn)Swish激活函數(shù)的示例詳解

    激活函數(shù)是人工神經(jīng)網(wǎng)絡(luò)的基本組成部分,他們將非線性引入模型,使其能夠?qū)W習(xí)數(shù)據(jù)中的復(fù)雜關(guān)系,Swish 激活函數(shù)就是此類激活函數(shù)之一,在本文中,我們將深入研究 Swish 激活函數(shù),提供數(shù)學(xué)公式,探索其相對于 ReLU 的優(yōu)勢,并使用 PyTorch 演示其實現(xiàn)
    2023-11-11
  • Python中列表的一些基本操作知識匯總

    Python中列表的一些基本操作知識匯總

    這篇文章主要介紹了Python中列表的一些基本操作知識匯總,皆屬于Python的基本功,需要的朋友可以參考下
    2015-05-05

最新評論