精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

解開Python中self的四個秘密

開發(fā) 前端
毫無疑問,幾乎每一門Python課程都有一個關(guān)于(class)類的講座——面向?qū)ο缶幊陶Z言的基本構(gòu)建模塊之一。

self的謎團

毫無疑問,幾乎每一門Python課程都有一個關(guān)于(class)類的講座——面向?qū)ο缶幊陶Z言的基本構(gòu)建模塊之一。

當(dāng)您通過一些示例學(xué)習(xí)它時,您將注意到在Python類中定義的許多函數(shù)都將self作為它們的第一個參數(shù)。例如,在下面的代碼片段中,我們聲明了一個名為Student的類,它的greet()方法的第一個參數(shù)是self。但是,函數(shù)根本沒有使用self,所以這里的self到底是從哪里來的呢?這對許多初學(xué)者來說是第一個謎。

  1. >>> class Student: 
  2. ...     def greet(self, name): 
  3. ...         print('Good Morning, ' + name) 
  4. ...  
  5. >>> student = Student() 
  6. >>> student.greet('John'
  7. Good Morning, John 

同樣奇怪的是,當(dāng)我們使用這個函數(shù)時,我們并沒有給self參數(shù)設(shè)置任何東西,這是困擾我們的另一個謎題。在這篇文章中,我們將與學(xué)習(xí)者分享一些Python中self的奧秘。

[[378103]]

1. 它代表什么?

在開始處理這個謎題之前,我們需要理解兩個基本的相關(guān)概念:類和實例。當(dāng)然,解決所有這些謎題需要額外的知識,而不僅僅是類和實例,我將在接下來的討論中澄清這一點。如果你對這兩個概念都很了解,你可以跳過下一段,這段只是對這兩個概念的簡要概述。

創(chuàng)建Python類就是聲明一種新的對象類型,它提供了一種將數(shù)據(jù)和功能捆綁在一起的機制。在上面的示例中,我們創(chuàng)建了一個名為Student的類,并使用它創(chuàng)建了一個名為Student的學(xué)生類型的對象。這個對象被稱為student類的實例。此外,類還可以提供通常稱為屬性的特定功能,例如示例中的greet()函數(shù)。我們使用三個內(nèi)省(introspection)函數(shù)(type()、isinstance()和hasattr())來檢查相關(guān)信息。

  1. >>> type(Student) 
  2. <class 'type'
  3. >>> type(student) 
  4. <class '__main__.Student'
  5. >>> isinstance(student, Student) 
  6. True 
  7. >>> hasattr(Student, 'greet'
  8. True 

我可以簡單地告訴您,greet()函數(shù)中的self參數(shù)是上面示例中的student實例。更一般地說,是實例調(diào)用這個函數(shù)。以下是支持證據(jù):

  1. >>> class Student: 
  2. ...     def greet(self, name): 
  3. ...         print(id(self)) 
  4. ...         print('Good Morning, ' + name) 
  5. ...  
  6. >>> student = Student() 
  7. >>> student.greet('John'
  8. 4546580944 
  9. Good Morning, John 
  10. >>> id(student) 
  11. 4546580944 

在上面的代碼中,我們修改了greet()函數(shù),要求它使用內(nèi)省id()函數(shù)向我們顯示self參數(shù)的內(nèi)存地址。如您所見,self參數(shù)和實例student是同一個對象,因為它們具有相同的內(nèi)存地址。

解開Python中self的四個秘密

2. 為什么不需要在函數(shù)調(diào)用中設(shè)置它呢?

繼續(xù)上一節(jié)中展示的示例,當(dāng)我們使用實例student調(diào)用greet()函數(shù)時,這個函數(shù)通常被稱為實例方法——一個對某個類的實例可用的函數(shù)。但是,如果我們檢查這個屬性的類型,就會顯示一些不同的東西。

  1. >>> student = Student() 
  2. >>> student.greet 
  3. <bound method Student.greet of <__main__.Student object at 0x10eff5750>> 

如上所述,實例student的greet屬性稱為綁定方法。具體來說,它被綁定到Student類的greet屬性。

為了準(zhǔn)確理解這意味著什么,讓我們看看下面的代碼:

  1. >>> Student.greet(student, 'John'
  2. Good Morning, John 

結(jié)合開頭的示例,您可能會注意到這段代碼中的三件事:

  1. 這個函數(shù)的調(diào)用者是類Student,而不是實例student。
  2. 在這個調(diào)用中設(shè)置了self和name參數(shù),這與student調(diào)用初始函數(shù)時忽略self參數(shù)不同。
  3. 兩個函數(shù)調(diào)用都產(chǎn)生了相同的輸出。它們本質(zhì)上用的是同一個函數(shù)。

通過實現(xiàn)這些信息,您可能已經(jīng)猜到在使用實例student調(diào)用greet()函數(shù)時,幕后發(fā)生了什么。

解開Python中self的四個秘密

如上圖所示,當(dāng)實例student調(diào)用greet(' John ')方法時,解釋器將處理此函數(shù)調(diào)用,作為類Student將調(diào)用者(即實例student)和name參數(shù)(即' John ')發(fā)送給greet(self, name)函數(shù),該函數(shù)打印“Good Morning, John”。

對于感興趣的讀者,這里有幾件事要知道,可以幫助你更深入地了解這個謎。當(dāng)創(chuàng)建一個Python類時,它聲明的函數(shù)就是這個類的屬性(稱為函數(shù)對象)。換句話說,類“擁有”這些函數(shù)。類的實例不會直接實現(xiàn)這些函數(shù)。相反,它們將具有與類中實現(xiàn)的相應(yīng)函數(shù)綁定的相同屬性(即實例方法)。

3.self是一個關(guān)鍵詞嗎?

似乎在所有這些已定義的函數(shù)中,我們都使用self作為它們的第一個參數(shù)。有些人可能錯誤地認(rèn)為self是Python為這些用例保留的關(guān)鍵字。然而,事實并非如此。請看下面一個簡單的例子:

  1. >>> def=5 
  2.   File "<stdin>", line 1 
  3.     def=5 
  4.        ^ 
  5. SyntaxError: invalid syntax 
  6. >>> class=4 
  7.   File "<stdin>", line 1 
  8.     class=4 
  9.         ^ 
  10. SyntaxError: invalid syntax 
  11. >>> self=3 

你可能知道,def和class是Python中的關(guān)鍵字,我們不能用它們作為變量名。然而,我們可以在定義函數(shù)的上下文之外使用self作為變量名,這表明它在Python中不是保留關(guān)鍵字。

解開Python中self的四個秘密

4. 我們必須在這些函數(shù)聲明中使用self嗎?

在上面的例子中,我們重復(fù)引用了greet()函數(shù)。正如我們已經(jīng)討論過的,我們將這個函數(shù)實現(xiàn)為一個實例方法,這樣它就可以被這個Student類的所有實例使用。在這種情況下,self是必需的。下面是一些證據(jù):

  1. >>> class Teacher: 
  2. ...     def say_hello(name): 
  3. ...         print('Hello, ' + name) 
  4. ... 
  5. >>> teacher = Teacher() 
  6. >>> teacher.say_hello('John'
  7. Traceback (most recent call last): 
  8.   File "<stdin>", line 1, in <module> 
  9. TypeError: say_hello() takes 1 positional argument but 2 were given 

這里有一些分析。如前所述,當(dāng)實例teacher調(diào)用say_hello()方法時,發(fā)生的事情是執(zhí)行teacher .say_hello()函數(shù),并將實例對象teacher和' John '設(shè)置為函數(shù)調(diào)用。這就是為什么錯誤說“2是給定的。這與函數(shù)的定義相反,函數(shù)的定義只有一個參數(shù)(name)。

然而,還有兩件事與這個謎有關(guān),你可能想知道:

  • 雖然聲明實例方法需要包含self參數(shù),但它不必命名為self。在這個場景中使用這個名稱只是每個Python程序員都能欣賞的一種約定。下面是一個例子,它可以被命名為其他東西而不會引起任何問題。盡管它在語法上是正確的,但不推薦使用,因為它只會讓其他Python程序員感到困惑:
  1. >>> class Teacher: 
  2. ...     def say_hello(professor, name): 
  3. ...         print('Hello, ' + name) 
  4. ... 
  5. >>> teacher = Teacher() 
  6. >>> teacher.say_hello('John'
  7. Hello, John 
  • 在聲明其他函數(shù)(如類和靜態(tài)方法)時,不需要使用self參數(shù)。對類和靜態(tài)方法的清晰解釋將是以后文章的主題。但我在這里可以展示的是,當(dāng)我們聲明一個類方法時,函數(shù)確實有一些類似于在實例方法中使用self的東西,它通常被稱為cls,引用類對象本身。它與具體實例無關(guān)。下面是一個例子:
  1. >>> class Student: 
  2. ...     def __init__(self, name): 
  3. ...         self.name = name 
  4. ...     @classmethod 
  5. ...     def with_names(cls, first_name, last_name): 
  6. ...         return cls(first_name + ' ' + last_name) 
  7. ...  
  8. >>> student = Student.with_names('John''Smith'
  9. >>> student.name 
  10. 'John Smith' 

英文原文:

Unlock the 4 Mysteries of self in Python | by Yong Cui | Better Programming | Medium

 

 

 

責(zé)任編輯:張燕妮 來源: 今日頭條
相關(guān)推薦

2013-04-11 12:56:14

費道明HTML

2022-05-04 12:44:57

Python編程語言

2013-10-22 09:30:22

2022-01-12 15:50:24

JavaScript開發(fā)循環(huán)

2024-11-14 09:00:00

Python編程元編程

2021-08-14 09:48:02

ReentrantLock多線編程

2020-08-13 10:29:55

項目管理項目經(jīng)理CIO

2011-07-14 15:23:34

java

2024-06-25 12:45:05

2013-03-18 13:31:28

2024-05-10 12:33:06

flask裝飾器

2024-09-26 10:00:00

Python文件處理

2022-02-23 15:09:18

數(shù)字化轉(zhuǎn)型國有企業(yè)數(shù)據(jù)

2023-08-21 13:39:57

開發(fā)桌面Ubuntu

2010-03-30 11:00:46

Oracle 數(shù)據(jù)

2023-10-26 07:47:35

JavaScript代碼變量

2011-05-18 09:32:14

java

2010-06-29 09:06:39

Java思想Java虛擬機

2020-06-04 08:15:53

Kubernetes容器PaaS

2022-06-27 23:31:01

JavaScript框架開發(fā)
點贊
收藏

51CTO技術(shù)棧公眾號

欧美日韩伦理| 欧美日韩国产v| 91香蕉视频污| 国产精品爽黄69| 人妻久久一区二区| 欧美一级二级三级视频| 在线欧美小视频| 久久天天东北熟女毛茸茸| 婷婷在线免费观看| 久久精品国产亚洲高清剧情介绍| 欧美日本亚洲视频| www在线观看免费视频| 亚洲最大的免费视频网站| 亚洲超碰精品一区二区| 亚洲一区不卡在线| 婷婷色在线视频| 国产专区综合网| 欧美亚洲另类视频| 亚洲熟女www一区二区三区| 免费看日本一区二区| 日韩欧美国产精品| 一区二区三区韩国| 午夜不卡影院| 亚洲在线免费播放| 综合国产精品久久久| 日韩精品系列| 成人午夜电影久久影院| 成人h视频在线| 日韩国产亚洲欧美| 国产精品久久久久久模特| 久久国产精品久久久| 国产调教在线观看| 亚洲图区在线| 亚洲国产精久久久久久| 手机看片国产精品| 性欧美video另类hd尤物| 色哟哟一区二区| 日本手机在线视频| 国产亚av手机在线观看| 亚洲精品日韩一| 国产精品av免费| av国产在线观看| 国产日韩在线不卡| 日本一区免费看| 日本成人一区| 91看片淫黄大片一级| 国产精品一区二区三区在线| 亚洲国产精品视频在线| 国产精品乡下勾搭老头1| 成人黄色大片在线免费观看| 涩涩视频在线观看| 欧美a级一区二区| 国产精品成人观看视频国产奇米| 国产高潮久久久| 亚洲免费中文| 青青草成人在线| 午夜婷婷在线观看| 久久精品一区二区国产| 国产精品盗摄久久久| 亚洲天堂视频在线播放| 日本伊人精品一区二区三区观看方式| 国产不卡视频在线| 中文字幕在线观看第二页| 日产欧产美韩系列久久99| 国产精品va在线播放我和闺蜜| 麻豆精品久久久久久久99蜜桃| 亚洲一区二区三区四区五区午夜| 26uuu另类亚洲欧美日本老年| 天天操天天操天天操天天| 性高湖久久久久久久久| 日韩av成人在线| 日韩欧美一级大片| 国产美女久久久久| 国产精品毛片va一区二区三区| 欧美一级片免费| 久久欧美中文字幕| 亚洲高清视频一区二区| 成人午夜在线影视| 午夜av一区二区| 中文字幕国产传媒| 日韩精品一区二区三区中文字幕| 精品少妇一区二区三区免费观看| v天堂中文在线| 日韩国产欧美| 欧美国产乱视频| 精品国产一区二区三区四| 免费视频一区二区| 97夜夜澡人人双人人人喊| 五月婷婷狠狠干| 国产精品美女久久久久久2018 | 一区二区三区在线观看视频 | 久久中文在线| 成人久久久久久久| 亚洲av电影一区| 国产精品久久久久久妇女6080| 国产精品av免费观看| 欧美片第一页| 精品国产一二三| 欧美黄色高清视频| 激情欧美亚洲| 国产精品三级网站| 黑人精品一区二区| 国产精品久久久久一区| 欧美亚洲一二三区| 国产激情综合| 夜夜躁日日躁狠狠久久88av| 久久这里只有精品国产| 美女在线观看视频一区二区| 国模精品娜娜一二三区| 乱人伦中文视频在线| 精品久久久久久久久久| 亚洲一区二区三区四区精品| 亚洲精品推荐| 久久久久久久久久久国产| 中文字幕日韩经典| av高清久久久| 国产91在线亚洲| 久久av影院| 亚洲精品中文字幕女同| 国产一级生活片| 国产伦精品一区二区三区免费 | 91国产丝袜在线播放| 麻豆免费在线观看视频| 99久久99视频只有精品| 日本精品视频在线播放| 成人午夜视频一区二区播放| 国产精品第四页| 天天碰免费视频| 欧美在线关看| 久久久免费精品| 精品国产黄色片| 国产精品不卡视频| 亚洲第一狼人区| 精品日本12videosex| 91高清免费视频| 少妇荡乳情欲办公室456视频| 亚洲女女做受ⅹxx高潮| 亚洲天堂2018av| 精品免费视频| 国产精品免费久久久久影院| 精品视频三区| 色播五月激情综合网| 一级黄色片大全| 久久精品导航| 欧美日韩在线高清| 欧美三级网址| 国产一区二区三区四区福利| 欧美日韩一级黄色片| 久久综合色鬼综合色| 国产亚洲综合视频| 九九综合在线| 国产精品香蕉在线观看| 成人高清免费在线播放| 欧美日韩中文字幕精品| 日本高清黄色片| 老司机一区二区| aaa免费在线观看| 日本高清久久| 久久久久久免费精品| 国模无码一区二区三区| 欧美日韩国产一区在线| 久久人人妻人人人人妻性色av| 一区二区黄色| 日韩国产美国| 精品国产黄a∨片高清在线| 色婷婷**av毛片一区| 国产免费无遮挡| 亚洲一区二区三区国产| 少妇精品一区二区| 人妖欧美一区二区| 99久re热视频精品98| 一区二区在线视频观看| 8x拔播拔播x8国产精品| 国产在线观看免费网站| 91精品国产色综合久久不卡蜜臀 | 久久久久成人精品无码中文字幕| aa级大片欧美三级| 日韩福利一区二区三区| 亚洲伊人伊成久久人综合网| 国产69精品久久久| 国产视频精品久久| 欧美刺激脚交jootjob| av中文在线播放| 国产精品不卡一区| 欧产日产国产精品98| 蜜臀av性久久久久av蜜臀妖精| 国产女人18毛片| 香蕉久久精品日日躁夜夜躁| 国产日韩换脸av一区在线观看| 欧美1—12sexvideos| 亚洲区一区二区| www.av导航| 日本高清不卡视频| 国产免费无码一区二区视频| 久久久久久99久久久精品网站| www.桃色.com| 久久亚洲风情| www成人免费| 成人免费看片39| 国产精品9999久久久久仙踪林| 免费亚洲电影| 欧美国产日韩一区二区| 国产一级网站视频在线| 日韩精品资源二区在线| 中国黄色一级视频| 婷婷综合另类小说色区| 亚洲综合网在线| 中日韩av电影| 黄色a一级视频| 国产成人av一区二区三区在线| 免费裸体美女网站| 亚洲福利国产| 潘金莲一级淫片aaaaaa播放1| 一区二区三区四区在线看| 亚洲最大激情中文字幕| 国产极品一区| 欧美在线国产精品| 1区2区3区在线| 欧美成人午夜激情视频| 一本一道波多野毛片中文在线| 国产手机视频精品| 欧美自拍偷拍一区二区| 日韩一区二区电影| 一级黄色免费看| 色激情天天射综合网| 国产成人一区二区三区影院在线| 亚洲欧美日韩国产另类专区| 一级片久久久久| 久久久精品免费免费| 亚洲一区二区三区无码久久| 国产精品99久久久久| 亚洲精品第三页| 美女尤物国产一区| xx欧美撒尿嘘撒尿xx| 日韩精品欧美成人高清一区二区| 国产亚洲精品网站| 亚洲一区成人| 日韩av片在线看| 制服诱惑一区二区| 国产精品又粗又长| 日韩一区二区免费看| 人妻少妇精品无码专区二区| 亚洲性人人天天夜夜摸| 91黄色在线看| 日韩视频在线一区二区三区 | 日韩欧美中文字幕一区二区三区| 国产日韩精品在线播放| 91成人在线| 国产精品网站视频| 欧美天堂在线| 成人淫片在线看| 精品国产亚洲一区二区三区大结局 | 日本视频一区在线观看| 国产欧美日韩| 亚洲国产午夜伦理片大全在线观看网站 | 自拍偷拍亚洲区| 久久bbxx| 欧美高清第一页| bl视频在线免费观看| 97视频免费在线看| 日韩成人动漫| 国产一区二区在线播放| 国产精品3区| yy111111少妇影院日韩夜片 | 亚洲精品天天看| 国产在线中文字幕| 日韩中文理论片| 污视频网站免费在线观看| 国产+成+人+亚洲欧洲| 亚洲伊人av| 国产免费一区二区三区在线能观看| av日韩久久| 国产在线精品一区| 成人女性视频| 日韩成人三级视频| 丝袜a∨在线一区二区三区不卡| 视频二区在线播放| 成人深夜福利app| 91成人破解版| 亚洲另类在线一区| 精品在线播放视频| 欧美伊人久久久久久久久影院| 国产精品一区二区免费视频| 亚洲国产精品成人av| 91在线网址| 久久久亚洲影院| 成人不卡视频| 黄色99视频| 欧美高清视频手机在在线| 久久福利一区二区| 天堂午夜影视日韩欧美一区二区| 2025韩国理伦片在线观看| 成人丝袜高跟foot| 国产精品麻豆免费版现看视频| 亚洲aⅴ怡春院| 91禁在线观看| 亚洲欧美日韩精品久久亚洲区 | 二区三区在线观看| 欧美一区二粉嫩精品国产一线天| **国产精品| 日本一区二区精品| 亚洲私人影院| 在线观看免费视频污| 国产午夜精品久久久久久免费视 | 全黄一级裸体片| 夜夜嗨av一区二区三区网页| 在线观看毛片网站| 精品亚洲永久免费精品| 欧美日韩经典丝袜| 成人精品aaaa网站| 成人高清av| 欧美日韩在线中文| 成人晚上爱看视频| 激情五月少妇a| 9191久久久久久久久久久| 精品视频二区| 欧美在线亚洲一区| 老司机精品在线| 免费特级黄色片| 国产激情精品久久久第一区二区| 91狠狠综合久久久久久| 欧美性猛xxx| 日韩中文字幕免费观看| 色综合久久88色综合天天看泰| 一区二区三区| 正义之心1992免费观看全集完整版| 天堂蜜桃91精品| 成人免费毛片糖心| 欧美性感美女h网站在线观看免费| 国产小视频一区| 欧美激情免费看| 综合欧美亚洲| 草草视频在线免费观看| 成人自拍视频在线观看| 欧美被狂躁喷白浆精品| 日韩一区二区精品葵司在线| 秋霞成人影院| 成人h猎奇视频网站| 久久久久久久久久久9不雅视频| 99视频在线视频| 中国av一区二区三区| 美女黄页在线观看| 影音先锋日韩有码| 99精品国自产在线| 亚洲一区二区在线免费观看| 麻豆一区二区三| 国产免费一区二区三区四区| 在线播放亚洲一区| 污污网站在线观看| 国产精品9999久久久久仙踪林| 99热在线精品观看| 成人免费网站黄| 欧美视频日韩视频在线观看| 婷婷激情在线| 亚洲自拍小视频免费观看| 欧美精品成人| 好吊一区二区三区视频| 日本高清无吗v一区| 尤物视频在线免费观看| 91免费看片网站| 亚洲黄色大片| 精品成人av一区二区三区| 欧美午夜电影网| a级在线观看| 精品欧美一区二区三区久久久| 免费中文字幕日韩欧美| 成熟人妻av无码专区| 欧美电影一区二区| 国产在线xxx| 日韩福利影院| 国产成人精品一区二 | 欧美日韩视频在线第一区 | 黄色免费在线观看网站| 国产69精品久久久久9999apgf| 亚洲视频大全| 性爱在线免费视频| 欧美第一区第二区| 性高爱久久久久久久久| 少妇熟女一区二区| av电影在线观看一区| 中文字幕资源网| 欧美精品激情视频| 欧美日韩在线二区| 中文字幕第六页| 色欧美片视频在线观看在线视频| 国产秀色在线www免费观看| 国产亚洲自拍偷拍| 精品在线播放午夜| 91精品国产乱码在线观看| 中文字幕在线日韩 | 亚洲毛片一区二区| 在线观看欧美| 免费观看精品视频| 一区二区不卡在线视频 午夜欧美不卡在| av女名字大全列表| 91视频8mav| 久久亚洲视频| 亚洲国产精品午夜在线观看| 中文国产成人精品| 欧美亚洲色图校园春色|