亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > Python > 正文

python 參數列表中的self 顯式不等于冗余

2020-02-23 04:41:43
字體:
來源:轉載
供稿:網友
self在區分全局變量/函數和對象中的成員變量/函數十分有用。例如,它提供了一種作用域機制,我個人認為比Ruby的@和@@清晰多了,這可能是習慣使然吧,但它確實和C++、Java中的this很相似。
然而,self總是有令我困擾的地方,我以前在這里說過—我曾幻想能在Python3中這些能得以改進,然后通常會引發一輪熱議并最終以人們所說的“顯勝于隱”告終。
我在巴西的時候曾和Luciano Ramalho(巴西Python組織的主席)有過一次交談。他讓我明白并非無處不在的self讓我困擾不已,而是參數列表中的self,我想也稱為非pythonic(un-pythonic)。
它是如何使用的
下面是一些簡單的Python代碼,說明了如何使用類。
代碼如下:
def f(): pass
a = 1
class C1(object):
a = 2
def m1(self):
print a # Prints '1'
print self.a # Prints '2'
f() # The global version
self.m2() # Must scope other members
def m2(self): pass
obj = C1()
obj.m1()

首先看f()和a,它們都可在全局作用域中調用。類C1被定義成繼承自object,這是定義一個新類的標準過程(我想在Python3中這些會變得更加不明顯)。
注意,m1()和m2()的第一個參數都是self。在Python中,self不是關鍵字。但按照慣例“self”代表當前對象的地址,也就是對象的地址通常是第一個參數。
在類范圍上定義a是創建對象作用域的方式之一。你也可以在a的method里賦值給self.a,并且第一次運行該語句時就分配了這個域的內存空間。但有必要區分兩種版本的a。若在method內部使用a,那么這個a就是全局版本的,而self.a體現的是對象域(你也可以在類內部對全局變量進行賦值,這里我暫不考慮這種情況)。
同樣地,一個對f()的非限定調用(unqualified call)造就了全局函數,通過對其限定self.m2()調用的是成員函數(同時將當前對象地址作為傳遞給m2()的self變量)。
現在來看一個含有帶參數的method的類:
代碼如下:
class C2(object):
def m2(self, a, b): pass

為了調用該method,我們創建了一個對象實例,然后使用點表達式調用對象obj上的m2():
代碼如下:
obj = C2()
obj.m2(1,2)

在調用過程中,obj的地址作為self變量在m2()中隱含傳遞,這里遇到了一個嚴重的矛盾:為何當定義method時隱式好于顯式,而調用method時隱式也毫無問題?
當然我想這可能是method調用語法所要求的,但這就意味著method的定義和調用有很大不同,這里既沒有“顯式”也不pythonic。在調用參數個數錯誤的method時就能看出來:
obj.m2(1)
結果錯誤提示為:
Traceback (most recent call last):
File "classes.py", line 9, in <module>
obj.m2(1)
TypeError: m2() takes exactly 3 arguments (2 given)
由于method調用期間self的隱式參數傳遞,上述錯誤信息實際是說應該這樣調用method:
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
日韩av电影免费观看高清| 欧美激情精品久久久久久黑人| 久99九色视频在线观看| 国产精品美女无圣光视频| 日韩中文字在线| 日本精品视频在线| 欧美精品videos性欧美| 国产精品第1页| 九九精品在线视频| 粉嫩av一区二区三区免费野| 91国产一区在线| 国产精品一二三在线| 日韩在线视频观看| 国内精品久久久久久影视8| 97久久超碰福利国产精品…| 亚洲精品日产aⅴ| 国产丝袜一区视频在线观看| 国产欧美日韩丝袜精品一区| www亚洲欧美| 日日噜噜噜夜夜爽亚洲精品| 在线精品播放av| 精品国产999| 久久精品国产清自在天天线| 精品欧美aⅴ在线网站| 久久久视频精品| 亚洲视频在线播放| 88国产精品欧美一区二区三区| 成人国内精品久久久久一区| 国产一区二区在线播放| 久久亚洲精品国产亚洲老地址| 亚洲久久久久久久久久久| 亚洲国产欧美在线成人app| 久久综合色88| 成人激情视频在线观看| 午夜精品久久久久久99热软件| 中文字幕久热精品在线视频| 久久亚洲一区二区三区四区五区高| 日韩精品在线视频美女| 欧美俄罗斯乱妇| 国产美女精彩久久| 尤物99国产成人精品视频| 亚洲欧美国产另类| 成人国内精品久久久久一区| 亚洲国产婷婷香蕉久久久久久| 久久影院资源站| 国产在线高清精品| 亚洲大胆人体视频| 精品久久久久久久久久久久久| 日韩综合视频在线观看| 亚洲国产精品成人一区二区| 亚洲国产精品久久久久秋霞不卡| 欧美夫妻性生活xx| 国产剧情日韩欧美| 亚洲欧美日韩精品| 日韩一区在线视频| 亚洲free嫩bbb| 精品色蜜蜜精品视频在线观看| 欧美专区在线播放| 色阁综合伊人av| 国产啪精品视频| 亚洲一区二区三区777| 日韩精品在线视频观看| 久久久视频免费观看| 伊是香蕉大人久久| 久久精品亚洲热| 国产精品久久久久久久av电影| 亚洲美女av黄| 欧洲一区二区视频| 亚洲精品欧美日韩| 青青草成人在线| 久久这里只有精品视频首页| 欧美亚洲成人xxx| 亚洲欧洲视频在线| 国产精品久久国产精品99gif| 91色精品视频在线| 欧美性理论片在线观看片免费| 国产精品第三页| 97久久精品人人澡人人爽缅北| 日韩欧美在线一区| 亚洲精品欧美极品| 91av在线看| 久久久久久久影视| 亚洲精品乱码久久久久久按摩观| 欧美日韩xxxxx| 97视频在线看| 亚洲欧美激情一区| 精品亚洲国产成av人片传媒| 国产成人精品免费久久久久| 在线观看精品国产视频| 欧美激情小视频| 国产69精品久久久久9999| 国产国产精品人在线视| 国产日韩欧美一二三区| 亚洲国产一区二区三区在线观看| 日韩精品免费电影| 日韩在线中文视频| 国产一区二中文字幕在线看| 日韩不卡在线观看| 欧美在线影院在线视频| 欧美视频不卡中文| 国产精品麻豆va在线播放| 97av在线播放| 日韩av免费在线播放| 97久久精品人人澡人人爽缅北| 亚洲午夜激情免费视频| 亚洲精品网站在线播放gif| 91情侣偷在线精品国产| 亚洲男人的天堂在线播放| 97精品久久久| 秋霞午夜一区二区| 亚洲第一二三四五区| 欧美激情一二区| 久久久极品av| 91沈先生在线观看| 视频直播国产精品| 亚洲人成五月天| 亚洲最大的网站| 亚洲人成免费电影| 成人黄色影片在线| 热门国产精品亚洲第一区在线| 亚洲综合在线播放| 国语自产偷拍精品视频偷| 欧美大片欧美激情性色a∨久久| 日韩在线视频免费观看| xx视频.9999.com| 欧美成人午夜免费视在线看片| 亚洲欧美一区二区三区久久| 国产91av在线| 一区二区av在线| 91精品视频大全| 欧美性xxxx极品高清hd直播| 国产精品爱啪在线线免费观看| 国产欧美最新羞羞视频在线观看| 91成人国产在线观看| 国产精品美女久久久久av超清| 成人a免费视频| 日韩免费在线视频| 久久久久久久香蕉网| 久久69精品久久久久久国产越南| 国产精品嫩草影院久久久| 久久精品一本久久99精品| 亚洲一区二区三区sesese| 成人精品视频99在线观看免费| 国产精品中文在线| 欧美电影在线观看| 成人黄色在线免费| 国产成人一区二区| 日本精品久久久久久久| 91精品免费久久久久久久久| 中日韩美女免费视频网址在线观看| 欧美丰满老妇厨房牲生活| 亚洲欧美日韩网| 97成人精品视频在线观看| 91精品视频免费看| 国产精品入口免费视频一| 成人h片在线播放免费网站| 一区二区三区视频免费在线观看| 免费91麻豆精品国产自产在线观看| 日本精品免费观看| 日韩免费观看高清| 亚洲高清在线观看| 日韩欧美成人免费视频| 日本国产一区二区三区| 日本中文字幕久久看|