日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > python >内容正文

python

关于Python中的self

發(fā)布時間:2025/5/22 python 17 豆豆
生活随笔 收集整理的這篇文章主要介紹了 关于Python中的self 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

雖然我現(xiàn)在寫過一些Python代碼,但實(shí)際上幾乎還沒用過Class,而且一直覺得一個很別扭的事情是,Class中的函數(shù)都要寫個參數(shù)self,雖然實(shí)例化調(diào)用的時候不需要。

當(dāng)然,一開始就知道Python這樣設(shè)計(jì)應(yīng)該有它的理由,具體是什么也沒去考慮。

今天看到一個這樣的說法:

源地址:http://www.douban.com/group/topic/19376685/

我解釋一下python的類方法為什么要寫一個self參數(shù)

來自:?巴特富萊韋杭普(Butterfly Wet-hamp)?2011-04-26 23:18:19

這是對前面一個php程序員問python方法為什么要手寫一個self的回答,當(dāng)時那個帖非常的熱鬧,但是下面沒有一個回復(fù)講到要點(diǎn),等我有空,已經(jīng)找不到原帖了。?

原因有多重。首先是python中幾乎所有的東西的一級對象(一級對象的定義:http://en.wikipedia.org/wiki/First-class_object),method也不例外,比如你寫一個:?
class X:?
 def f(self, a, b):?
  ...?
那么可以這樣引用f:?
X.__dict__['f']?
或者?
X.f.__func__?

現(xiàn)在問題來了,得到f以后怎么調(diào)用?f是一個方法,方法必須作用于對象。如果x是一個X對象,我們可以x.f(...),但是如果是以上面的方式得到的f呢?怎么f讓作用于某個對象?最直觀的方法就是和參數(shù)一起傳遞進(jìn)去。?

當(dāng)然的限不同的設(shè)計(jì)也可以滿足上面制。比如不要手寫的self參數(shù),增加this關(guān)鍵字,增加一個調(diào)用f個格式。這樣的設(shè)計(jì)和pep20第二條不符合。?

為理解python的self,不妨對比一下ruby和javascript。ruby的方式是方法不是一級對象,所以繞過了這個問題。javascript沒有類,方法在調(diào)用時this會綁定到方法所屬的對象,函數(shù)調(diào)用時this綁定到window,函數(shù)做構(gòu)造器調(diào)用時this綁定到新對象。這么多規(guī)則,比Python復(fù)雜。?

11人?喜歡?喜歡 回應(yīng)?推薦?喜歡只看樓主
  • 狼.敬畏生命?(wolf python london)?2011-04-27 08:38:50

    說下我的理解:?

    我在學(xué)習(xí)python的時候,也發(fā)現(xiàn)一直寫著self很別扭,在c++中,this指針是隱式的,除非不得以的時候,,比如傳進(jìn)來的參數(shù)和類的成員變量的名字相同,或者要返回當(dāng)前對象。 而python的self是顯示的。而且this指針基本上不用在函數(shù)頭里面。?

    python是動態(tài)語言,設(shè)計(jì)出來的類和靜態(tài)語言的格式不同,首先c++在類的定義(聲明)時,會指定類的成員變量,比如在private:里。但是Python不行,它沒法顯式的說 哪個屬性是自己的,而且屬性還可以動態(tài)的增加,此時,一個解決方案出來了,增加self,通過self.訪問的就可以做為類的屬性。至于類的方法為什么要顯式的寫上self(我感覺,完全可以由解釋器隱式添加上去),估計(jì)就是python的哲學(xué)導(dǎo)致的:Explicit is better than implicit.?

  • zizi?(努力賺錢中)?2011-04-27 09:20:05

    個人理解:?
    除了前兩種形式外還有第三種形式X.f,這個返回的和前兩個不同。?
    其實(shí)你寫不寫self或者其他什么對于python來說都無所謂,對于python來說,方法就分兩種一種是綁定的,一種是不綁定。對于綁定的方法來說,python就會把他綁定的對象作為第一個參數(shù)傳給這個對象。self僅僅是提醒你這個方法會被綁定到實(shí)例上而已。?

    同時這樣做還有個好處就是兼容python的C/API部分。Python本身是用C寫成的,在C中實(shí)現(xiàn)類似面向機(jī)制都是這么寫的:?
    SSL_connect(SSL *ssl, ARG *arg1)?
    再看看Python C API的OO部分?
    int PyObject_Print(PyObject *o, FILE *fp, int flags)?

    所以我大膽猜測self的機(jī)制是從C繼承而來的。

  • zizi?(努力賺錢中)?2011-04-27 09:26:38

    PS:對于你說ruby中方法不是第一級對象這個事情能否解釋一下??
    我RUBY用的不多,但是我印象中ruby的方法應(yīng)該能滿足first class的定義。

  • 李保銀?2011-04-27 10:21:11

    self是類方法的一個位置參數(shù),它就是類的實(shí)例對象自己,當(dāng)實(shí)例調(diào)用方法時:?
    instance = X()?
    instance.f('a', 'b')?
    等同于:?
    X.f(instance, 'a', 'b')?
    第一個參數(shù)是實(shí)例自己。

  • bachue?2013-05-16 15:58:28

    "當(dāng)然的限不同的設(shè)計(jì)也可以滿足上面制。比如不要手寫的self參數(shù),增加this關(guān)鍵字,增加一個調(diào)用f個格式。這樣的設(shè)計(jì)和pep20第二條不符合。"?
    不能茍同 如果真的是“Explicit is better than implicit.”,為何x.f()中的x是以implicit的方法送進(jìn)f的?為何不寫成f(x)?為何Python不去除面向?qū)ο笠酝耆珜?shí)現(xiàn)“Explicit is better than implicit.”?

  • alinwawa?2013-09-08 05:25:57

    狼.敬畏生命,寫得最好。確實(shí)python犧牲了隱式的簡潔,但是換來了極大的靈活性,比如隨意添加對象屬性。這個比c++方便太多倍了。

  • 蘇打?2013-09-08 08:59:36

    說下我的理解: 我在學(xué)習(xí)python的時候,也發(fā)現(xiàn)一直寫著self很別扭,在c++中,this指針是隱式?...?狼.敬畏生命

    靠IDE能否省掉這些重復(fù)?

  • 精密空調(diào)?2013-09-11 12:01:24

    習(xí)慣上,方法的第一個參數(shù)命名為 self。這僅僅是一個約定:對Python而言,self 絕對沒有任何特殊含義。(然而要注意的是,如果不遵守這個約定,別的Python程序員閱讀你的代碼時會有不便,而且有些類瀏覽程序也是遵循此約定開發(fā)的。)

?雖然基本上算是理解了Python為什么要加這個self。但是!!!我必須想明白這個但是!!!我之所以喜歡Python,就是因?yàn)樗暮啙?#xff0c;我之前的理解是:

用最少的工作做最多的事情

繁瑣的工作沒必要做

出來的結(jié)果跟想象的結(jié)果驚人的一致

正因?yàn)檫@樣,所以,我實(shí)在是無法理解這個self,無論從哪方面考慮,它都是多余的,既然連{}這種東西都能省,為什么一個self不能省?!縱使PEP 20哲學(xué)說清晰好過模糊,但為什么還支持帶缺省值的參數(shù),為什么不像C語言那樣不能省略?

所以,無論是從Python設(shè)計(jì)哲學(xué)還是設(shè)計(jì)技術(shù)細(xì)節(jié)來考慮,這個self真的是一個很奇怪的東西,再怎么說,前面已經(jīng)有個class了,這一段就是類啊!!!

轉(zhuǎn)載于:https://www.cnblogs.com/fwindpeak/p/3341787.html

總結(jié)

以上是生活随笔為你收集整理的关于Python中的self的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 精品美女久久久久 | 久久av无码精品人妻出轨 | 亚洲精品视频免费观看 | 日本三级久久久 | 一本到在线视频 | 国产精品美女在线观看 | 最新av不卡| 久久久久女教师免费一区 | 日韩一级片在线观看 | 日本九九视频 | 99久久夜色精品国产亚洲 | 日本色一区 | 成人av在线电影 | 看av免费毛片手机播放 | 欧美成人不卡视频 | 免费一级片网站 | 欧美性做爰猛烈叫床潮 | 四虎影视www在线播放 | 国产精久久久久久 | 免费欧美黄色片 | 国产乱淫a∨片免费观看 | 亚洲三级理论 | 男生脱女生衣服 | 国产成人免费视频网站 | 日日爱99 | 综合伊人久久 | 国产乱国产乱老熟300部视频 | 啪啪福利社| 全黄毛片 | 久久精品国产亚洲AV无码麻豆 | 免看一级a毛片一片成人不卡 | 三区在线观看 | 先锋影音中文字幕 | 丁香花电影高清在线阅读免费 | 日本欧美www | 在线播放国产精品 | 日韩免费小视频 | 中国无码人妻丰满熟妇啪啪软件 | 福利片第一页 | 日本特级黄色大片 | 午夜国产福利视频 | 成人毛片大全 | 黄色一区二区三区四区 | 99re6在线 | 国产一级二级三级 | 91精品婷婷国产综合久久竹菊 | 日韩有码在线视频 | www.色妞| 亚洲美女精品 | 国产色影院 | 久久精品视屏 | 精品少妇一区二区三区在线观看 | 精品久久久中文字幕 | 成人123区 | 91精品国产乱码在线观看 | 午夜私人福利 | 中文字幕乱码中文乱码b站 国产一区二区三区在线观看视频 | a片在线免费观看 | 男女毛片视频 | 自拍毛片 | 婷婷伊人网 | 国产精品扒开腿做爽爽爽视频 | 国产毛片a | 四虎视频在线观看 | 91精品视频免费看 | 嫩草影院懂你的 | 黑人玩弄人妻一区二区三区四 | 国产免费无码XXXXX视频 | 最新版天堂资源在线 | 亚洲精品偷拍视频 | 91插插插视频 | 国产毛片毛片毛片毛片毛片 | 操女人的逼逼 | 色婷婷成人网 | 日韩图片区 | 黄网站免费大全入口 | 直接看av的网站 | 国产久视频 | 国产三级精品三级在线 | 91视频免费看片 | 人妻激情偷乱频一区二区三区 | 亚洲尤物在线 | 日美毛片| 欧美日韩在线视频一区二区三区 | 久久成人国产精品 | 欧美自拍视频在线观看 | 国产精品九九九九 | 欧美一区二区三区日韩 | 91香焦视频 | 中文久久久 | 欧美成人精品一区二区综合免费 | 欧美日韩精品二区 | 胸网站 | 久久99激情| 熟女高潮一区二区三区视频 | 亚洲人人爱 | 国产高清无遮挡 | 日韩成人精品一区二区三区 | 日本三级欧美三级 |