前言
如果你以前沒有接觸過面向?qū)ο蟮木幊陶Z言,那你可能需要先了解一些面向?qū)ο笳Z言的一些基本特征,在頭腦里頭形成一個基本的面向?qū)ο蟮母拍睿@樣有助于你更容易的學(xué)習(xí)Python的面向?qū)ο缶幊獭?/p>
接下來我們就來了解關(guān)于Python面向?qū)ο缶幊痰闹R點吧。
類與實例
類是對象的定義,而實例是"真正的實物",它存放了類中所定義的對象的具體信息。
類、屬性和方法命名規(guī)范
類名通常由大寫字母打頭。這是標(biāo)準(zhǔn)慣例,可以幫助你識別類,特別是在實例化過程中(有時看起來像函數(shù)調(diào)用)。還有,數(shù)據(jù)屬性(變量或常量)聽起來應(yīng)當(dāng)是數(shù)據(jù)值的名字,方法名應(yīng)當(dāng)指出對應(yīng)對象或值的行為。
另一種表達(dá)方式是:數(shù)據(jù)值應(yīng)該使用名詞作為名字,方法使用謂詞(動詞加對象)。數(shù)據(jù)項是操作的對象、方法應(yīng)當(dāng)表明程序員想要在對象進(jìn)行什么操作。
在定義的類中,大致遵循這樣的方針,數(shù)據(jù)值像 “name”, “phone” 和 “email”,行為如 “updatePhone”,“updateEmail”。這就是常說的 “混合記法(mixedCase)” 或 “駱駝記法(camelCase)”。Python 規(guī)范推薦使用駱駝記法的下劃線方式,比如, “update_phone”,“update_email”。類也要細(xì)致命名,像 “AddrBookEntry”, “RepairShop” 等等就是很好的名字。
class AddrBookEntry(object): def __init__(self, name, phone, email): self.name = name self.phone = phone self.email = email def update_phone(self, phone): self.phone = phone def update_email(self. email): self.email = email
新式類與舊式類
新式類和經(jīng)典類聲明的最大不同在于,所有新式類必須繼承至少一個父類。如果沒有可繼承的類,則可繼承 object 類。object 是“所有類之母” ,它位于所有類繼承結(jié)構(gòu)的最上層。如果沒有直接或間接的子類化一個對象,那么就定義了一個經(jīng)典類。即如果沒有指定一個父類,或者如果所子類化的基本類沒有父類,這樣就是創(chuàng)建了一個經(jīng)典類。
在 Python3 中定義的類,默認(rèn)就是新式類,而在 Python2 中要定義一個新式類則必須繼承 object 或者繼承一個新式類。
self 變量
類的方法與普通的函數(shù)只有一個特別的區(qū)別,即它們必須有一個額外的第一個參數(shù)名稱,但是在調(diào)用這個方法的時候你不必為這個參數(shù)賦值,Python 會提供這個值。這個特別的變量指對象本身,按照慣例它的名稱是 self。雖然可以給這個參數(shù)任何名稱,但是強烈建議使用 self 這個名稱,其他名稱都是不贊成使用的。
__init__() 方法
__init__() 類似于類構(gòu)造器,但實際上并不是一個構(gòu)造器。Python 創(chuàng)建實例后,在實例化過程中,調(diào)用 __init__() 方法,當(dāng)一個類被實例化時,就可以定義額外的行為,比如,設(shè)定初始值或者運行一些初步診斷代碼,這主要是在實例被創(chuàng)建后,實例化調(diào)用返回這個實例之前,去執(zhí)行某些特定的任務(wù)或設(shè)置。
新聞熱點
疑難解答
圖片精選