溫馨提示×

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

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

python使用類是什么時(shí)候

發(fā)布時(shí)間:2020-07-14 15:11:32 來源:億速云 閱讀:750 作者:Leah 欄目:編程語言

本篇文章給大家分享的是有關(guān)python使用類是什么時(shí)候,小編覺得挺實(shí)用的,因此分享給大家學(xué)習(xí),希望大家閱讀完這篇文章后可以有所收獲,話不多說,跟著小編一起來看看吧。

Python中所有的數(shù)據(jù)都是對(duì)象,它提供了許多高級(jí)的內(nèi)建數(shù)據(jù)類型,功能強(qiáng)大,使用方便,是Python的優(yōu)點(diǎn)之一。那么什么時(shí)候使用自定義類呢?比如設(shè)計(jì)一個(gè)Person類,如果不使用自定義類,可以這樣做:

person=['mike', 23, 'male']  #0-姓名, 1-年紀(jì), 2-性別
print(person[0], person[1], person[2])

可以看到,使用內(nèi)建類型list,需要用下標(biāo)來引用成員數(shù)據(jù),不直觀??梢愿挠胐ic類型來做:

person1={'name':'mike', 'age': 23, 'sex': 'male'}
person2={'name':'hellen', 'age': 20, 'sex': 'female'}
print(person1['name'], person1['age'], person1['sex'])

這樣不用記憶下標(biāo),直觀多了。但是字典的語法仍然有些麻煩,如果能夠像這樣引用:person.name,person.age等,就更好。這就是自定義類存在的好處了:

class Person:
    def __init__(self, name, age, sex):
        self.name = name
        self.age = age
        self.sex = sex
    def __str__(self): #重載該函數(shù)便于測(cè)試
        sep = ','
        return self.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è)類的構(gòu)造函數(shù),就可以很方便的生成這個(gè)類的實(shí)例,并且引用數(shù)據(jù)成員也很方便,比直接使用內(nèi)建類型方便多了。其實(shí)Python就是用內(nèi)建類型dic來實(shí)現(xiàn)自定義類的成員的存儲(chǔ)和引用的,從這個(gè)角度來看,自定義類是內(nèi)建類的簡(jiǎn)化使用方式,內(nèi)建類型是自定義類型內(nèi)部必要的組成部分。同時(shí),由于自定義類可以定義自己的成員函數(shù)或者重載預(yù)定義的方法,所以自定義類擴(kuò)展了內(nèi)建類的功能,可以提供對(duì)現(xiàn)實(shí)事物更好的模擬,這正是面向?qū)ο缶幊痰膬?yōu)點(diǎn)。編程的時(shí)候,先對(duì)所要模擬的事物形成概念,然后盡量使用類來抓住概念,這是面向?qū)ο笤O(shè)計(jì)的關(guān)鍵。如果需要產(chǎn)生多個(gè)同類的對(duì)象,應(yīng)該盡可能地設(shè)計(jì)一個(gè)自定義類去抽象它們。

對(duì)自定義類的使用也別過分,有些功能只需要定義一個(gè)函數(shù)就可以做到了,這個(gè)時(shí)候就沒有必要設(shè)計(jì)一個(gè)自定義類。

以上就是python使用類是什么時(shí)候,小編相信有部分知識(shí)點(diǎn)可能是我們?nèi)粘9ぷ鲿?huì)見到或用到的。希望你能通過這篇文章學(xué)到更多知識(shí)。更多詳情敬請(qǐng)關(guān)注億速云行業(yè)資訊頻道。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI