日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關(guān)咨詢(xún)
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問(wèn)題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷(xiāo)解決方案
創(chuàng)新互聯(lián)Python教程:python里self是什么

首先我們要搞明白Python的類(lèi)中為要什么要用到SELF這個(gè)單詞呢,為什么不用"zhangsan"、"lisi"這樣的名字呢,這可定有他的用意。查Google翻譯解釋?zhuān)?/p>

錦江網(wǎng)站制作公司哪家好,找創(chuàng)新互聯(lián)建站!從網(wǎng)頁(yè)設(shè)計(jì)、網(wǎng)站建設(shè)、微信開(kāi)發(fā)、APP開(kāi)發(fā)、響應(yīng)式網(wǎng)站等網(wǎng)站項(xiàng)目制作,到程序開(kāi)發(fā),運(yùn)營(yíng)維護(hù)。創(chuàng)新互聯(lián)建站2013年至今到現(xiàn)在10年的時(shí)間,我們擁有了豐富的建站經(jīng)驗(yàn)和運(yùn)維經(jīng)驗(yàn),來(lái)保證我們的工作的順利進(jìn)行。專(zhuān)注于網(wǎng)站建設(shè)就選創(chuàng)新互聯(lián)建站

self
名詞的解釋?zhuān)鹤?;自我;自?/pre>

那么問(wèn)題來(lái)了,這里的自己指代的到底是誰(shuí),下面聽(tīng)我詳細(xì)分解。

分析

測(cè)試代碼以一下這個(gè)代碼及其它的擴(kuò)充為基礎(chǔ),先貼代碼,為了好理解,別說(shuō)了半天不知道我在說(shuō)什么。

class A():
    def song(one):
        print(one)
    def sing(self,one):
        print(one)

1、首先要搞清楚的一個(gè)問(wèn)題 a=A()與a=A,這兩個(gè)賦值之間的區(qū)別

a=A()
print(a)
a=A
print(a)
print(A)
結(jié)果如下:
<__main__.A object at 0x0000020A69C81780>


分析:
a=A()  是有地址的,這說(shuō)明他是一個(gè)實(shí)體,比如 int a  中的 a 一樣
a=A    是沒(méi)有地址的,發(fā)現(xiàn)他和A打印的結(jié)果一毛一樣,這說(shuō)明他就是A,也就是一個(gè)類(lèi)名,
等價(jià)于上一句中 int a 中的 int       
那么也就是說(shuō)下面這兩語(yǔ)句是等價(jià)的
b=A()   與   b=a()
------------------------------------------------------------------------
通過(guò)上面的分析,我們知道,a=A()相當(dāng)于把 A 給實(shí)例化了,什么叫實(shí)例化呢,類(lèi)比與 int a ,
int 什么都不能做,即 int 不能被賦值,不能進(jìn)行算術(shù)操作等等,但是 a 可以(其實(shí)這里的 A 與 int
是一樣的,追溯到C語(yǔ)言,類(lèi)只不過(guò)是一種自定義的結(jié)構(gòu)變量而已,只不過(guò)功能更加強(qiáng)大)。
那具體怎么個(gè)實(shí)例發(fā)呢?

2、self 到底指代的是誰(shuí)

class A():
    def song(one):
        print(one)
    def sing(self,one):
        print(one)
a=A()
A.sing(a,"hello")  #注意這條語(yǔ)句
a.sing("hello")
打印結(jié)果:
hello
hello
-------------------------------
A.sing("hello")
錯(cuò)誤信息:
TypeError: sing() missing 1 required positional argument: 'one'
提示沒(méi)有給 one 賦值
--------------------------------
a.song("hello")
錯(cuò)誤信息:
TypeError: song() takes 1 positional argument but 2 were given
那么問(wèn)題來(lái)了,多給了一個(gè)什么參數(shù),為什么會(huì)多給呢?
--------------------------------
把類(lèi)A改一下
class A():
    def song(one,two):   #注意這里多給song了一個(gè)參數(shù)
        print(one)
a.song("hello")   //這里的參數(shù)  "hello"賦給了 two
print(a)
打印結(jié)果:
<__main__.A object at 0x0000020A69C39CC0>
<__main__.A object at 0x0000020A69C39CC0>
是不是很奇怪,為什么a.song("hello")返回的是  實(shí)例  a  的地址呢?

從這個(gè)例子中你就可以發(fā)現(xiàn),實(shí)際上 a.sing(“hello”) 等價(jià)于 A.sing(a,“hello”),而self就是實(shí)例 a 自己,而且你發(fā)現(xiàn) self ,也可以用別的單詞來(lái)代替。

通過(guò)這段分析,我們簡(jiǎn)單的知道了,類(lèi)中的方法第一個(gè)參數(shù)必須是 self ,不然實(shí)例無(wú)法正確調(diào)用類(lèi)中的方法,也就是說(shuō),如果方法中第一個(gè)參數(shù)不是 self(廣義的),那么這個(gè)方法是沒(méi)有任何價(jià)值的,因?yàn)閷?shí)例無(wú)法調(diào)用它,一個(gè)無(wú)法被調(diào)用的方法真不知道有什么用。

參數(shù)前面的 self

x=6
class A():
    def sing(self):
        self.x=10
    def mutl(self):
        y=10*x
        print(y)
a=A()  
a.mutl()

這里先猜一下結(jié)果,到底會(huì)打印 60 呢,還是 100 呢?要弄清這個(gè)問(wèn)題,就要先弄清 mutl() 中的 x 到底是哪一個(gè),先看結(jié)果在分析。

結(jié)果是:60

為什么不調(diào)用類(lèi)內(nèi)部的 x 參數(shù)而跑去調(diào)用類(lèi)外的 x 呢?還是那個(gè)問(wèn)題,self 到底指代的是誰(shuí),self 就是 a 本身,那么問(wèn)題就很明顯了,mutl() 方法中的 x 前面沒(méi)有加 self 所以他調(diào)用的不是實(shí)例(注意這里說(shuō)的是實(shí)例,而不是類(lèi))自身的參數(shù)。

到這里我想你大概明白了,參數(shù)前面有self和沒(méi)self的區(qū)別了,簡(jiǎn)單說(shuō),帶self的參數(shù)是人家實(shí)例自身的,不帶self的,愛(ài)誰(shuí)誰(shuí),實(shí)例不管。

self相關(guān)內(nèi)容推薦閱讀:

self在函數(shù)中使用

python什么時(shí)候加self?

更多python學(xué)習(xí),歡迎使用python學(xué)習(xí)網(wǎng),免費(fèi)學(xué)習(xí)python,還可以觀看免費(fèi)視頻教程。


標(biāo)題名稱(chēng):創(chuàng)新互聯(lián)Python教程:python里self是什么
文章來(lái)源:http://www.dlmjj.cn/article/dheighe.html