這篇文章主要介紹了python中類是什么意思,具有一定借鑒價值,需要的朋友可以參考下。希望大家閱讀完這篇文章后大有收獲。下面讓小編帶著大家一起了解一下。

python中什么叫類?
可以視為種類或者類型的同義詞。所有的對象都屬于某一個類,稱為類的實例。
例如:鳥就是"鳥類"的實例。這就是一個有很多子類的一般(抽象)類:看到的鳥可能屬于子類"百靈鳥"。可以將"鳥類"想象成所有鳥的集合,而"百靈鳥類"是其中的一個子集。當一個對象所屬的類是另外一個對象所屬類的子集時,前者就被稱為后者的子類,所以"百靈鳥類"是"鳥類"的子類,"鳥類"是"百靈鳥類"的超類
定義子類只是個定義更多方法的過程.
創(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在調用foo的setName和greet函數(shù)時,foo自動將自己作為第一個參數(shù)傳入函數(shù)中,因此命名為self。沒有self的話,成員方法就沒法訪問他們要對其特性進行操作的對象本身了
特性是可以外部訪問的:
>>> foo.name'Nsds'>>> bar.name='Yoda'>>> bar.greet() Hello,world! I'm Yoda
特性、函數(shù)、方法
self參數(shù)事實上正是方法和函數(shù)的區(qū)別。方法將它們的第一個參數(shù)綁定到所屬的實例上,因此這個參數(shù)可以不必提供。所以可以將特性綁定到一個普通函數(shù)上,這樣就不會有特殊的self參數(shù)了:
(特性是對象內部的變量,對象的狀態(tài)由它的特性來描述,對象的方法可以改變它的特性,可以直接從對象外部訪問特性)
>>> 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上,還是對self參數(shù)的訪問(仍舊綁定到類的相同實例上)
>>> class Bird:
song='Squaawk'
def sing(self): print self.song
>>> bird=Bird()>>> bird.sing()
Squaawk>>> birdsong=bird.sing>>> birdsong()
Squaawk在名稱前加上雙下劃線,可以讓方法或者特性變?yōu)樗接校◤耐獠繜o法訪問)
>>> 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...在類的內部定義中,所有以雙下劃線開的名字都被"翻譯"成前面加上單下劃線和類名的形式
>>> Secretive._Secretive__inaccessible<unbound method Secretive.__inaccessible> >>> s._Secretive__inaccessible() Bet you can't see me...
類的命名空間
定義類時,所有位于class語句中的代碼都在特殊的命名空間中執(zhí)行---類的命名空間。這個命名空間可由類內所有成員訪問。
類的定義其實就是執(zhí)行代碼塊
>>> =+=1
>>> m1=>>>>>>1
>>> m1.members=2
>>>2
>>> m2=>>>>>>2
>>>>>>3
>>>2
>>>新members值被寫到了m1的特性中,屏蔽了類范圍內的變量
超類
>>> 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])多個超類
先繼承的類中的方法會重寫后繼承的類中的方法
>>> 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感謝你能夠認真閱讀完這篇文章,希望小編分享python中類是什么意思內容對大家有幫助,同時也希望大家多多支持創(chuàng)新互聯(lián),關注創(chuàng)新互聯(lián)行業(yè)資訊頻道,遇到問題就找創(chuàng)新互聯(lián),詳細的解決方法等著你來學習!
新聞標題:python中類是什么意思-創(chuàng)新互聯(lián)
URL分享:http://chinadenli.net/article12/dsghdc.html
成都網站建設公司_創(chuàng)新互聯(lián),為您提供定制開發(fā)、營銷型網站建設、手機網站建設、微信公眾號、網站制作、域名注冊
聲明:本網站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內容