91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

python中類是什么意思

發布時間:2020-11-17 14:18:31 來源:億速云 閱讀:172 作者:小新 欄目:編程語言

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

python中什么叫類?

可以視為種類或者類型的同義詞。所有的對象都屬于某一個類,稱為類的實例。

例如:鳥就是"鳥類"的實例。這就是一個有很多子類的一般(抽象)類:看到的鳥可能屬于子類"百靈鳥"。可以將"鳥類"想象成所有鳥的集合,而"百靈鳥類"是其中的一個子集。當一個對象所屬的類是另外一個對象所屬類的子集時,前者就被稱為后者的子類,所以"百靈鳥類"是"鳥類"的子類,"鳥類"是"百靈鳥類"的超類

定義子類只是個定義更多方法的過程.

創建類

>>> 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函數時,foo自動將自己作為第一個參數傳入函數中,因此命名為self。沒有self的話,成員方法就沒法訪問他們要對其特性進行操作的對象本身了

特性是可以外部訪問的:

>>> foo.name'Nsds'>>> bar.name='Yoda'>>> bar.greet()
Hello,world! I'm Yoda

特性、函數、方法

self參數事實上正是方法和函數的區別。方法將它們的第一個參數綁定到所屬的實例上,因此這個參數可以不必提供。所以可以將特性綁定到一個普通函數上,這樣就不會有特殊的self參數了:

(特性是對象內部的變量,對象的狀態由它的特性來描述,對象的方法可以改變它的特性,可以直接從對象外部訪問特性)

>>> 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參數的訪問(仍舊綁定到類的相同實例上)

>>> class Bird:
    song='Squaawk'
    def sing(self):        print self.song        
>>> bird=Bird()>>> bird.sing()
Squaawk>>> birdsong=bird.sing>>> birdsong()
Squaawk

在名稱前加上雙下劃線,可以讓方法或者特性變為私有(從外部無法訪問)

>>> 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語句中的代碼都在特殊的命名空間中執行---類的命名空間。這個命名空間可由類內所有成員訪問。

類的定義其實就是執行代碼塊

>>> =+=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中類是什么意思內容對大家有幫助,同時也希望大家多多支持億速云,關注億速云行業資訊頻道,遇到問題就找億速云,詳細的解決方法等著你來學習!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

山丹县| 姚安县| 马关县| 丰顺县| 绵阳市| 定兴县| 临潭县| 剑川县| 潮安县| 衡阳市| 旌德县| 定西市| 台山市| 通辽市| 西青区| 绥芬河市| 砚山县| 栖霞市| 宁武县| 区。| 伊春市| 西畴县| 南涧| 天镇县| 清丰县| 大悟县| 百色市| 蓬溪县| 漯河市| 泰宁县| 东乌珠穆沁旗| 易门县| 古浪县| 马龙县| 乌什县| 城固县| 柳州市| 平邑县| 翁牛特旗| 沾益县| 修武县|