最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python self用法詳解

 更新時間:2020年11月28日 11:02:11   作者:RioTian  
這篇文章主要介紹了Python self用法的相關資料,幫助大家更好的理解和學習python,感興趣的朋友可以了解下

在定義類的過程中,無論是顯式創(chuàng)建類的構造方法,還是向類中添加實例方法,都要求將 self 參數作為方法的第一個參數。例如,定義一個 Person 類:

class Person:
  def __init__(self):
    print("正在執(zhí)行構造方法")
  # 定義一個study()實例方法
  def study(self):
    print(self,"正在學Python")
zhangsan = Person()
zhangsan.study()
lisi = Person()
lisi.study()

那么,self 到底扮演著什么樣的角色呢?接下來將對 self 參數做詳細的介紹。

事實上,Python 只是規(guī)定,無論是構造方法還是實例方法,最少要包含一個參數,并沒有規(guī)定該參數的具體名稱。之所以將其命名為 self,只是程序員之間約定俗成的一種習慣,遵守這個約定,可以使我們編寫的代碼具有更好的可讀性(大家一看到 self,就知道它的作用)。

那么,self 參數的具體作用是什么呢?打個比方,如果把類比作造房子的圖紙,那么類實例化后的對象是真正可以住的房子。根據一張圖紙(類),我們可以設計出成千上萬的房子(類對象),每個房子長相都是類似的(都有相同的類變量和類方法),但它們都有各自的主人,那么如何對它們進行區(qū)分呢?

當然是通過 self 參數,它就相當于每個房子的門鑰匙,可以保證每個房子的主人僅能進入自己的房子(每個類對象只能調用自己的類變量和類方法)。

如果你接觸過其他面向對象的編程語言(例如 C++),其實 Python 類方法中的 self 參數就相當于 C++ 中的 this 指針。

也就是說,同一個類可以產生多個對象,當某個對象調用類方法時,該對象會把自身的引用作為第一個參數自動傳給該方法,換句話說,Python 會自動綁定類方法的第一個參數指向調用該方法的對象。如此,Python解釋器就能知道到底要操作哪個對象的方法了。

因此,程序在調用實例方法和構造方法時,不需要手動為第一個參數傳值。例如,更改前面的 Person 類,如下所示:

class Person:
  def __init__(self):
    print("正在執(zhí)行構造方法")
  # 定義一個study()實例方法
  def study(self):
    print(self,"正在學Python")
zhangsan = Person()
zhangsan.study()
lisi = Person()
lisi.study()

上面代碼中,study() 中的 self 代表該方法的調用者,即誰調用該方法,那么 self 就代表誰。因此,該程序的運行結果為:

正在執(zhí)行構造方法
<__main__.Person object at 0x0000021ADD7D21D0> 正在學Python
正在執(zhí)行構造方法
<__main__.Person object at 0x0000021ADD7D2E48> 正在學Python

另外,對于構造函數中的 self 參數,其代表的是當前正在初始化的類對象。舉個例子:

class Person:
  name = "xxx"
  def __init__(self,name):
    self.name=name
 
zhangsan = Person("zhangsan")
print(zhangsan.name)
lisi = Person("lisi")
print(lisi.name)

運行結果為:

zhangsan
lisi

可以看到,zhangsan 在進行初始化時,調用的構造函數中 self 代表的是 zhangsan;而 lisi 在進行初始化時,調用的構造函數中 self 代表的是 lisi。

值得一提的是,除了類對象可以直接調用類方法,還有一種函數調用的方式,例如:

class Person:
  def who(self):
    print(self)
zhangsan = Person()
#第一種方式
zhangsan.who()
#第二種方式
who = zhangsan.who
who()#通過 who 變量調用zhangsan對象中的 who() 方法

運行結果為:

<__main__.Person object at 0x0000025C26F021D0>
<__main__.Person object at 0x0000025C26F021D0>

顯然,無論采用哪種方法,self 所表示的都是實際調用該方法的對象。

總之,無論是類中的構造函數還是普通的類方法,實際調用它們的誰,則第一個參數 self 就代表誰。

以上就是Python self用法詳解的詳細內容,更多關于Python self用法的資料請關注腳本之家其它相關文章!

相關文章

  • Python Pandas兩個表格內容模糊匹配的實現

    Python Pandas兩個表格內容模糊匹配的實現

    模糊查詢大家應該都不會陌生,下面這篇文章主要給大家介紹了關于Python Pandas兩個表格內容模糊匹配的實現方法,文中通過示例代碼介紹的非常詳細,需要的朋友可以參考下
    2021-11-11
  • Python處理鍵映射值操作詳解

    Python處理鍵映射值操作詳解

    這篇文章主要為大家詳細介紹了Python中的處理鍵映射值操作的相關資料,文中的示例代碼講解詳細,具有一定的學習價值,感興趣的小伙伴可以了解一下
    2022-11-11
  • Python爬蟲分析微博熱搜關鍵詞的實現代碼

    Python爬蟲分析微博熱搜關鍵詞的實現代碼

    這篇文章主要介紹了Python爬蟲分析微博熱搜關鍵詞的實現代碼,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-02-02
  • 利用python繪制笛卡爾直角坐標系

    利用python繪制笛卡爾直角坐標系

    這篇文章主要介紹了利用python繪制笛卡爾直角坐標系,python繪圖主要用到matplotlib繪圖模塊,利用matplotlib模塊畫出上面的正弦函,需要的朋友可以參考一下
    2022-03-03
  • Dialog 按照順序彈窗的優(yōu)雅寫法

    Dialog 按照順序彈窗的優(yōu)雅寫法

    這篇文章主要介紹了Dialog 按照順序彈窗的寫法及示例,給大家介紹了DrawType的使用方式,需要的朋友可以參考下
    2021-09-09
  • Python?操作Excel-openpyxl模塊用法實例

    Python?操作Excel-openpyxl模塊用法實例

    openpyxl 模塊是一個讀寫 Excel 2010 文檔的 Python 庫,如果要處理更早格式的 Excel 文 檔,需要用到額外的庫,openpyxl 是一個比較綜合的工具,能夠同時讀取和修改 Excel 文檔,這篇文章主要介紹了Python?操作Excel-openpyxl模塊使用,需要的朋友可以參考下
    2023-05-05
  • python中利用隊列asyncio.Queue進行通訊詳解

    python中利用隊列asyncio.Queue進行通訊詳解

    asyncio是Python 3.4版本引入的標準庫,直接內置了對異步IO的支持。 下面這篇文章主要給大家介紹了關于python中利用隊列asyncio.Queue進行通訊的相關資料,文中通過示例代碼介紹的非常詳細,需要的朋友可以參考下。
    2017-09-09
  • Python實現簡單2048小游戲

    Python實現簡單2048小游戲

    這篇文章主要為大家詳細介紹了Python實現簡單2048小游戲,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-05-05
  • Python中Json使用示例詳解

    Python中Json使用示例詳解

    這篇文章主要介紹了Python中Json使用,主要介紹一下python?中?json的使用?如何把dict轉成json?、object?轉成json?、以及json轉成對象,需要的朋友可以參考下
    2022-07-07
  • Python中字典和JSON互轉操作實例

    Python中字典和JSON互轉操作實例

    這篇文章主要介紹了Python中字典和JSON互轉操作實例,本文給出了Dict轉JSON、讀取JSON并轉為Dict示例,需要的朋友可以參考下
    2015-01-01

最新評論

泌阳县| 寿阳县| 信阳市| 青岛市| 昌图县| 沅江市| 资阳市| 瓦房店市| 怀安县| 三都| 康定县| 体育| 尼木县| 连城县| 五大连池市| 金华市| 迁西县| 临澧县| 密山市| 建始县| 沁水县| 开鲁县| 息烽县| 清水县| 女性| 翁牛特旗| 临湘市| 屯门区| 宁强县| 门源| 山东| 磴口县| 邵东县| 汨罗市| 颍上县| 十堰市| 景宁| 肃南| 洞口县| 融水| 曲水县|