這篇文章主要介紹了python中類是什么意思,具有一定借鑒價(jià)值,需要的朋友可以參考下。希望大家閱讀完這篇文章后大有收獲。下面讓小編帶著大家一起了解一下。
黃龍ssl適用于網(wǎng)站、小程序/APP、API接口等需要進(jìn)行數(shù)據(jù)傳輸應(yīng)用場(chǎng)景,ssl證書未來(lái)市場(chǎng)廣闊!成為創(chuàng)新互聯(lián)的ssl證書銷售渠道,可以享受市場(chǎng)價(jià)格4-6折優(yōu)惠!如果有意向歡迎電話聯(lián)系或者加微信:13518219792(備注:SSL證書合作)期待與您的合作!
python中什么叫類?
可以視為種類或者類型的同義詞。所有的對(duì)象都屬于某一個(gè)類,稱為類的實(shí)例。
例如:鳥(niǎo)就是"鳥(niǎo)類"的實(shí)例。這就是一個(gè)有很多子類的一般(抽象)類:看到的鳥(niǎo)可能屬于子類"百靈鳥(niǎo)"??梢詫?quot;鳥(niǎo)類"想象成所有鳥(niǎo)的集合,而"百靈鳥(niǎo)類"是其中的一個(gè)子集。當(dāng)一個(gè)對(duì)象所屬的類是另外一個(gè)對(duì)象所屬類的子集時(shí),前者就被稱為后者的子類,所以"百靈鳥(niǎo)類"是"鳥(niǎo)類"的子類,"鳥(niǎo)類"是"百靈鳥(niǎo)類"的超類
定義子類只是個(gè)定義更多方法的過(guò)程.
創(chuàng)建類
>>> class Person: def setName(self,name): self.name=name def getName(self): return self.name def greet(self): print "Hello,world! I'm %s" % self.name >>> foo=Person()>>> bar=Person()>>> foo.setName('Nsds')>>> bar.setName('Ysdy')>>> foo.greet() Hello,world! I'm Nsds>>> bar.greet() Hello,world! I'm Ysdy
在調(diào)用foo的setName和greet函數(shù)時(shí),foo自動(dòng)將自己作為第一個(gè)參數(shù)傳入函數(shù)中,因此命名為self。沒(méi)有self的話,成員方法就沒(méi)法訪問(wèn)他們要對(duì)其特性進(jìn)行操作的對(duì)象本身了
特性是可以外部訪問(wèn)的:
>>> foo.name'Nsds'>>> bar.name='Yoda'>>> bar.greet() Hello,world! I'm Yoda
特性、函數(shù)、方法
self參數(shù)事實(shí)上正是方法和函數(shù)的區(qū)別。方法將它們的第一個(gè)參數(shù)綁定到所屬的實(shí)例上,因此這個(gè)參數(shù)可以不必提供。所以可以將特性綁定到一個(gè)普通函數(shù)上,這樣就不會(huì)有特殊的self參數(shù)了:
(特性是對(duì)象內(nèi)部的變量,對(duì)象的狀態(tài)由它的特性來(lái)描述,對(duì)象的方法可以改變它的特性,可以直接從對(duì)象外部訪問(wèn)特性)
>>> class Class: def method(self): print 'I have a self!' >>> def function(): print "I don't...">>> s=Class()>>> s.method() I have a self!>>> s.method=function>>> s.method() I don't...
變量birdsong引用綁定方法bird.sing上,還是對(duì)self參數(shù)的訪問(wèn)(仍舊綁定到類的相同實(shí)例上)
>>> class Bird: song='Squaawk' def sing(self): print self.song >>> bird=Bird()>>> bird.sing() Squaawk>>> birdsong=bird.sing>>> birdsong() Squaawk
在名稱前加上雙下劃線,可以讓方法或者特性變?yōu)樗接校◤耐獠繜o(wú)法訪問(wèn))
>>> class Secretive: def __inaccessible(self): print "Bet you can't see me..." def accessible(self): print "The secret message is:" self.__inaccessible() >>> s=Secretive()>>> s.__inacessible() Traceback (most recent call last): File "<pyshell#182>", line 1, in <module> s.__inacessible() AttributeError: 'Secretive' object has no attribute '__inacessible'>>> s.accessible() The secret message is: Bet you can't see me...
在類的內(nèi)部定義中,所有以雙下劃線開(kāi)的名字都被"翻譯"成前面加上單下劃線和類名的形式
>>> Secretive._Secretive__inaccessible<unbound method Secretive.__inaccessible> >>> s._Secretive__inaccessible() Bet you can't see me...
類的命名空間
定義類時(shí),所有位于class語(yǔ)句中的代碼都在特殊的命名空間中執(zhí)行---類的命名空間。這個(gè)命名空間可由類內(nèi)所有成員訪問(wèn)。
類的定義其實(shí)就是執(zhí)行代碼塊
>>> =+=1 >>> m1=>>>>>>1 >>> m1.members=2 >>>2 >>> m2=>>>>>>2 >>>>>>3 >>>2 >>>
新members值被寫到了m1的特性中,屏蔽了類范圍內(nèi)的變量
超類
>>> class Filter: def init(self): self.blocked=[] def filter(self,sequence): return [x for x in sequence if x not in self.blocked] >>> class SPAMFilter(Filter): def init(self): self.blocked=['SPAM'] >>> f=Filter()>>> f.init()>>> f.filter([1,2,3]) [1, 2, 3]>>> s=SPAMFilter()>>> s.init()>>> s.filter(['SPAM','SPAM','egg','name','ff']) ['egg', 'name', 'ff']
繼承,超類
>>> class Filter: def init(self): self.blockes=[] def filter(self,sequence): return [x for x in sequence if x not in self.blocked] >>> class S(Filter): def init(self): self.blocked=['s'] >>> f=Filter()>>> f.init()>>> f.filter([1,2,3])
多個(gè)超類
先繼承的類中的方法會(huì)重寫后繼承的類中的方法
>>> class C(): def calculate(self,expression): self.value=eval(expression) >>> class Talker(): def talk(self): print 'Hi,my value is',self.value >>> class TalkingCalculator(C,Talker): pass>>> tc=TalkingCalculator()>>> tc.calculate('1+2*3')>>> tc.talk() Hi,my value is 7
感謝你能夠認(rèn)真閱讀完這篇文章,希望小編分享python中類是什么意思內(nèi)容對(duì)大家有幫助,同時(shí)也希望大家多多支持創(chuàng)新互聯(lián),關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,遇到問(wèn)題就找創(chuàng)新互聯(lián),詳細(xì)的解決方法等著你來(lái)學(xué)習(xí)!
新聞標(biāo)題:python中類是什么意思
當(dāng)前URL:http://www.rwnh.cn/article0/gcgjio.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供定制網(wǎng)站、網(wǎng)站維護(hù)、商城網(wǎng)站、ChatGPT、靜態(tài)網(wǎng)站、移動(dòng)網(wǎng)站建設(shè)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)