您好,登錄后才能下訂單哦!
小編給大家分享一下python里的self怎么用,希望大家閱讀完這篇文章后大所收獲,下面讓我們一起去探討吧!
self的用法
1.自身 指的是實例本身(Instance)
2.由于"自身"這個詞,都是相對而言的"其它"說的,指的是類class,和其它變量,比如局部變量,全局變量
此處的self,是個對象(Object),是當(dāng)前類的實例。
Python中為什么要有self
在類的代碼(函數(shù))中,需要訪問當(dāng)前的實例中的變量和函數(shù)的,即訪問(實例)Instance中的
對應(yīng)的變量(屬性,property):Instance.ProperyNam,去讀取之前的值和寫入的值
(2)調(diào)用對應(yīng)的函數(shù)(function):Instance.function(),即執(zhí)行對應(yīng)的動作
而需要訪問實例的變量和調(diào)用實例的函數(shù),當(dāng)然需要對應(yīng)的實例Instance對象本身
而Python中就規(guī)定好了,函數(shù)的第一個參數(shù),就必須是實例對象本身,并且,建議,把其名寫為self
#! usr/bin/python3.7 # -*- coding:utf-8 -*- """ class Person(object): def __init__(self, name, lang, website): self.name = name self.lang = lang self.website = website print('self', self) print('type of self', type(self)) class Dog(object): def __init__(self, name, dog_type): self.name = name self.dog_type = dog_type # def sayhi(): # print("hello I am dog, my name is ",self.name) def sayhi(self): print("hello ,I am dog, my name is ",self.name) if __name__ == '__main__': p = Person('xiaoliang', 'hanyu', 'www.mutual-helper.com') d = Dog('Caty', 'Firce') """當(dāng)程序運(yùn)行時,會報錯,takes 0 positional arguments but 1 was given 這是因為這個函數(shù)不需要參數(shù),但是函數(shù)卻被傳遞了一個參數(shù),可是我們調(diào)用sayhi()函數(shù)的時候, 并沒有寫參數(shù)。為什么會出現(xiàn)這樣的參數(shù)Error 這是因為"每一個相關(guān)聯(lián)的方法調(diào)用都自動傳遞實參self,它是一個指向?qū)嵗旧淼囊胈_init__中的 參數(shù)self會自動傳遞給sayhi(),而sayhi()在定義的時候沒有形參,就會報錯。 """ d.sayhi() # d.sayhi(self),也會報錯
看完了這篇文章,相信你對python里的self怎么用有了一定的了解,想了解更多相關(guān)知識,歡迎關(guān)注億速云行業(yè)資訊頻道,感謝各位的閱讀!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。