類(Class)和實(shí)例(Instance)是面向?qū)ο笞钪匾母拍睢?p style="text-align: center;">
類是指抽象出的模板。實(shí)例則是根據(jù)類創(chuàng)建出來的具體的“對象”,每個(gè)對象都擁有從類中繼承的相同的方法,但各自的數(shù)據(jù)可能不同。
在python中定義一個(gè)類:
classStudent(object):
pass
關(guān)鍵字class后面跟著類名,類名通常是大寫字母開頭的單詞,緊接著是(object),表示該類是從哪個(gè)類繼承下來的。通常,如果沒有合適的繼承類,就使用object類,這是所有類最終都會(huì)繼承下來的類。
定義好了類,就可以根據(jù)Student類創(chuàng)建實(shí)例:
>>>classStudent(object):
...pass
...
>>>bart=Student()#bart是Student()的實(shí)例
>>>bart
<__main__.Studentobjectat0x101be77f0>
>>>Student#Student本身是一個(gè)類
可以自由地給一個(gè)實(shí)例變量綁定屬性,比如,給實(shí)例bart綁定一個(gè)name屬性:
>>>bart.name="diggzhang"
>>>bart.name'diggzhang'
類同時(shí)也可以起到模板的作用,我們可以在創(chuàng)建一個(gè)類的時(shí)候,把一些認(rèn)為公共的東西寫進(jìn)類定義中去,在python中通過一個(gè)特殊的__init__方法實(shí)現(xiàn):
classStudent(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)去。如下面的類,在新建實(shí)例的時(shí)候,需要把name和score屬性捆綁上去:
classStudent(object):
"""examplefor__init__functionpassinargs."""
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]:classStudent(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')
---------------------------------------------------------------------------
TypeErrorTraceback(mostrecentcalllast)
in()
---->1bart_test=Student('max')
TypeError:__init__()takesexactly3arguments(2given)
以上內(nèi)容為大家介紹了python培訓(xùn)之class怎么寫,希望對大家有所幫助,如果想要了解更多Python相關(guān)知識,請關(guān)注IT培訓(xùn)機(jī)構(gòu):千鋒教育。