python中所有的數(shù)據(jù)都是對(duì)象,它提供了許多高級(jí)的內(nèi)建數(shù)據(jù)類(lèi)型,功能強(qiáng)大,使用方便,是Python的優(yōu)點(diǎn)之一。那么什么時(shí)候使用自定義類(lèi)呢?比如設(shè)計(jì)一個(gè)Person類(lèi),如果不使用自定義類(lèi),可以這樣做:
person=['mike',23,'male']#0-姓名,1-年紀(jì),2-性別
print(person[0],person[1],person[2])
可以看到,使用內(nèi)建類(lèi)型list,需要用下標(biāo)來(lái)引用成員數(shù)據(jù),不直觀(guān)??梢愿挠胐ic類(lèi)型來(lái)做:
person1={'name':'mike','age':23,'sex':'male'}
person2={'name':'hellen','age':20,'sex':'female'}
print(person1['name'],person1['age'],person1['sex'])
這樣不用記憶下標(biāo),直觀(guān)多了。但是字典的語(yǔ)法仍然有些麻煩,如果能夠像這樣引用:person.name,person.age等,就更好。這就是自定義類(lèi)存在的好處了:
classPerson:
def__init__(self,name,age,sex):
self.name=name
self.age=age
self.sex=sex
def__str__(self):#重載該函數(shù)便于測(cè)試
sep=','
returnself.name+sep+str(self.age)+sep+self.sex
person1=Person('mike',23,'male')
person2=Person('hellen',20,'female')
print(person1)
print(person2.name,person2.age,person2.sex)
可以看到,只要定義好這個(gè)類(lèi)的構(gòu)造函數(shù),就可以很方便的生成這個(gè)類(lèi)的實(shí)例,并且引用數(shù)據(jù)成員也很方便,比直接使用內(nèi)建類(lèi)型方便多了。其實(shí)Python就是用內(nèi)建類(lèi)型dic來(lái)實(shí)現(xiàn)自定義類(lèi)的成員的存儲(chǔ)和引用的,從這個(gè)角度來(lái)看,自定義類(lèi)是內(nèi)建類(lèi)的簡(jiǎn)化使用方式,內(nèi)建類(lèi)型是自定義類(lèi)型內(nèi)部必要的組成部分。同時(shí),由于自定義類(lèi)可以定義自己的成員函數(shù)或者重載預(yù)定義的方法,所以自定義類(lèi)擴(kuò)展了內(nèi)建類(lèi)的功能,可以提供對(duì)現(xiàn)實(shí)事物更好的模擬,這正是面向?qū)ο缶幊痰膬?yōu)點(diǎn)。編程的時(shí)候,先對(duì)所要模擬的事物形成概念,然后盡量使用類(lèi)來(lái)抓住概念,這是面向?qū)ο笤O(shè)計(jì)的關(guān)鍵。如果需要產(chǎn)生多個(gè)同類(lèi)的對(duì)象,應(yīng)該盡可能地設(shè)計(jì)一個(gè)自定義類(lèi)去抽象它們。對(duì)自定義類(lèi)的使用也別過(guò)分,有些功能只需要定義一個(gè)函數(shù)就可以做到了,這個(gè)時(shí)候就沒(méi)有必要設(shè)計(jì)一個(gè)自定義類(lèi)。
以上內(nèi)容為大家介紹了python培訓(xùn)之class怎么用,希望對(duì)大家有所幫助,如果想要了解更多Python相關(guān)知識(shí),請(qǐng)關(guān)注IT培訓(xùn)機(jī)構(gòu):千鋒教育。