類(Class)和實例(Instance)是面向對象最重要的概念。
類是指抽象出的模板。實例則是根據類創(chuàng)建出來的具體的“對象”,每個對象都擁有從類中繼承的相同的方法,但各自的數據可能不同。
在python中定義一個類:
classStudent(object):
pass
關鍵字class后面跟著類名,類名通常是大寫字母開頭的單詞,緊接著是(object),表示該類是從哪個類繼承下來的。通常,如果沒有合適的繼承類,就使用object類,這是所有類最終都會繼承下來的類。
定義好了類,就可以根據Student類創(chuàng)建實例:
>>>classStudent(object):
...pass
...
>>>bart=Student()#bart是Student()的實例
>>>bart
<__main__.Studentobjectat0x101be77f0>
>>>Student#Student本身是一個類
可以自由地給一個實例變量綁定屬性,比如,給實例bart綁定一個name屬性:
>>>bart.name="diggzhang"
>>>bart.name'diggzhang'
類同時也可以起到模板的作用,我們可以在創(chuàng)建一個類的時候,把一些認為公共的東西寫進類定義中去,在python中通過一個特殊的__init__方法實現(xiàn):
classStudent(object):
"""__init__sample."""
def__init__(self,name,score):
self.name=name
self.score=score
__init__方法的第一個參數永遠都是self,表示創(chuàng)建實例本身,在__init__方法內部,可以把各種屬性綁定到self,因為self指向創(chuàng)建的實例本身。
有了__init__方法,在創(chuàng)建實例的時候,就不能傳入空的參數了,必須傳入與__init__方法匹配的參數,但self不需要傳,Python解釋器自己會把實例變量傳進去。如下面的類,在新建實例的時候,需要把name和score屬性捆綁上去:
classStudent(object):
"""examplefor__init__functionpassinargs."""
def__init__(self,name,score):
self.name=name
self.score=score
我們直接看個實例,如果我們老老實實傳name和score進去的時候,成功聲明了這個實例,但是只傳一個值的時候,報錯:
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)
以上內容為大家介紹了python培訓之class怎么寫,希望對大家有所幫助,如果想要了解更多Python相關知識,請關注IT培訓機構:千鋒教育。