新聞中心
類(lèi)(class)和實(shí)例(Instance)是面向?qū)ο笞钪匾母拍睢?/p>

創(chuàng)新互聯(lián)建站總部坐落于成都市區(qū),致力網(wǎng)站建設(shè)服務(wù)有網(wǎng)站設(shè)計(jì)、成都做網(wǎng)站、網(wǎng)絡(luò)營(yíng)銷(xiāo)策劃、網(wǎng)頁(yè)設(shè)計(jì)、網(wǎng)站維護(hù)、公眾號(hào)搭建、微信平臺(tái)小程序開(kāi)發(fā)、軟件開(kāi)發(fā)等為企業(yè)提供一整套的信息化建設(shè)解決方案。創(chuàng)造真正意義上的網(wǎng)站建設(shè),為互聯(lián)網(wǎng)品牌在互動(dòng)行銷(xiāo)領(lǐng)域創(chuàng)造價(jià)值而不懈努力!
類(lèi)是指抽象出的模板。實(shí)例則是根據(jù)類(lèi)創(chuàng)建出來(lái)的具體的“對(duì)象”,每個(gè)對(duì)象都擁有從類(lèi)中繼承的相同的方法,但各自的數(shù)據(jù)可能不同。
在python中定義一個(gè)類(lèi):
class Student(object): pass
關(guān)鍵字class后面跟著類(lèi)名,類(lèi)名通常是大寫(xiě)字母開(kāi)頭的單詞,緊接著是(object),表示該類(lèi)是從哪個(gè)類(lèi)繼承下來(lái)的。通常,如果沒(méi)有合適的繼承類(lèi),就使用object類(lèi),這是所有類(lèi)最終都會(huì)繼承下來(lái)的類(lèi)。
定義好了 類(lèi),就可以根據(jù)Student類(lèi)創(chuàng)建實(shí)例:
>>> class Student(object): ... pass ... >>> bart = Student() # bart是Student()的實(shí)例 >>> bart <__main__.Student object at 0x101be77f0> >>> Student # Student 本身是一個(gè)類(lèi)
可以自由地給一個(gè)實(shí)例變量綁定屬性,比如,給實(shí)例bart綁定一個(gè)name屬性:
>>> bart.name = "diggzhang" >>> bart.name'diggzhang'
類(lèi)同時(shí)也可以起到模板的作用,我們可以在創(chuàng)建一個(gè)類(lèi)的時(shí)候,把一些認(rèn)為公共的東西寫(xiě)進(jìn)類(lèi)定義中去,在python中通過(guò)一個(gè)特殊的__init__方法實(shí)現(xiàn):
class Student(object): """__init__ sample.""" def __init__(self, name, score): self.name = name self.score = score
__init__方法的第一個(gè)參數(shù)永遠(yuǎn)都是self,表示創(chuàng)建實(shí)例本身,在__init__方法內(nèi)部,可以把各種屬性綁定到self,因?yàn)閟elf指向創(chuàng)建的實(shí)例本身。
有了__init__方法,在創(chuàng)建實(shí)例的時(shí)候,就不能傳入空的參數(shù)了,必須傳入與__init__方法匹配的參數(shù),但self不需要傳,Python解釋器自己會(huì)把實(shí)例變量傳進(jìn)去。如下面的類(lèi),在新建實(shí)例的時(shí)候,需要把name和score屬性捆綁上去:
class Student(object): """example for __init__ function passin args.""" def __init__(self, name, score): self.name = name self.score = score
我們直接看個(gè)實(shí)例,如果我們老老實(shí)實(shí)傳name和score進(jìn)去的時(shí)候,成功聲明了這個(gè)實(shí)例,但是只傳一個(gè)值的時(shí)候,報(bào)錯(cuò):
In [1]: class Student(object):
...: def __init__(self, name, score):
...: self.name = name
...: self.score = score
...:
In [2]: bart = Student('diggzhang', 99)
In [3]: bart.name
Out[3]: 'diggzhang'
In [4]: bart.score
Out[4]: 99
In [5]: bart_test = Student('max')
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
in ()
----> 1 bart_test = Student('max')
TypeError: __init__() takes exactly 3 arguments (2 given) 更多學(xué)習(xí)內(nèi)容,請(qǐng)點(diǎn)擊Python學(xué)習(xí)網(wǎng)。
分享題目:創(chuàng)新互聯(lián)Python教程:python里的class怎么寫(xiě)
文章URL:http://m.fisionsoft.com.cn/article/cdeedjh.html


咨詢(xún)
建站咨詢(xún)
