跟著大大學(xué)python(34)

9.1 創(chuàng)建和使用類

使用類幾乎可以模擬任何東西。下面來編寫一個表示小狗的簡單類Dog——它表示的不是特定的小狗,而是任何小狗。對于大多數(shù)寵物狗,我們都知道些什么呢?它們都有名字和年齡;我們還知道,大多數(shù)小狗還會蹲下和打滾。由于大多數(shù)小狗都具備上述兩項信息(名字和年齡)和兩種行為(蹲下和打滾),我們的Dog類將包含它們。這個類讓Python知道如何創(chuàng)建表示小狗的對象。編寫這個類后,我們將使用它來創(chuàng)建表示特定小狗的實例。

9.1.1 創(chuàng)建Dog類

根據(jù)Dog類創(chuàng)建的每個實例都將存儲名字和年齡。我們賦予了每條小狗蹲下(sit())和打滾(roll_over())的能力:


9.1.1

在Python中,首字母大寫的名稱指的是類。這個類定義中的括號是空的,因為我們要從空白創(chuàng)建這個

類。接著我們編寫了一個文檔字符串,對這個類的功能作了描述。

? ? 1. 方法__init__()

? ? ? ? 類中的函數(shù)稱為方法;你前面學(xué)到的有關(guān)函數(shù)的一切都適用于方法,就目前而言,唯一重要的差別是調(diào)用方法的方式。方法__init__()是一個特殊的方法,每當(dāng)你根據(jù)Dog類創(chuàng)建新實例時,Python都會自動運行它。在這個方法的名稱中,開頭和末尾各有兩個下劃線,這是一種約定,旨在避免Python默認(rèn)方法與普通方法發(fā)生名稱沖突。

? ? ? ? 我們將方法__init__()定義成了包含三個形參:self、name和age。在這個方法的定義中,形參self必不可少,還必須位于其他形參的前面。為何必須在方法定義中包含形參self呢?因為Python調(diào)用這個__init__()方法來創(chuàng)建Dog實例時,將自動傳入實參self。每個與類相關(guān)聯(lián)的方法調(diào)用都自動傳遞實參self,它是一個指向?qū)嵗旧淼囊茫寣嵗軌蛟L問類中的屬性和方法。我們創(chuàng)建Dog實例時,Python將調(diào)用Dog類的方法__init__()。我們將通過實參向Dog()傳遞名字和年齡;self會自動傳遞,因此我們不需要傳遞它。每當(dāng)我們根據(jù)Dog類創(chuàng)建實例時,都只需給最后兩個形參(name和age)提供值。

? ? ? ? ?以self為前綴的變量都可供類中的所有方法使用,我們還可以通過類的任何實例來訪問這些變量。self.name = name獲取存儲在形參name中的值,并將其存儲到變量name中,然后該變量被關(guān)聯(lián)到當(dāng)前創(chuàng)建的實例。self.age = age的作用與此類似。像這樣可通過實例訪問的變量稱為屬性

? ? ? ? ?Dog類還定義了另外兩個方法:sit()和roll_over()。由于這些方法不需要額外的信息,如名字或年齡,因此它們只有一個形參self。我們后面將創(chuàng)建的實例能夠訪問這些方法,換句話說,它們都會蹲下和打滾。當(dāng)前,sit()和roll_over()所做的有限,它們只是打印一條消息,指出小狗正蹲下或打滾。但可以擴展這些方法以模擬實際情況:如果這個類包含在一個計算機游戲中,這些方法將包含創(chuàng)建小狗蹲下和打滾動畫效果的代碼。如果這個類是用于控制機器狗的,這些方法將引導(dǎo)機器狗做出蹲下和打滾的動作。

? ? 2. 在Python 2.7中創(chuàng)建類

class Dog(object):??

? ? ?--snip--


另:MySQL的初衷是存儲和管理大數(shù)據(jù)。如果有人想要跟蹤不同的數(shù)據(jù)點,他們互使用數(shù)據(jù)庫,也就是有點像微軟Excel那樣的東西。然而,隨著數(shù)據(jù)變得越來越大,查找Excel這樣的數(shù)據(jù)庫就會變得慢多了,也不再可靠。MySQL有能力存儲大量數(shù)據(jù),并且返回搜索結(jié)果極其迅速?!癕y”來自Monty女兒的名字,而“SQL”就是結(jié)構(gòu)化查詢語言(Structured Query Language)的意思,是一種跟數(shù)據(jù)庫溝通的語言。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 1.1面向?qū)ο?面向?qū)ο?object-oriented ;簡稱: OO)至今還沒有統(tǒng)一的概念 我這里把它定義為:...
    TENG書閱讀 636評論 0 0
  • 類 面向?qū)ο缶幊淌亲钣行У能浖帉懛椒ㄖ?在面向?qū)ο缶幊讨?,編寫表示現(xiàn)實世界中的事物和情景的類,并基于這些類來創(chuàng)...
    焰火青春閱讀 359評論 0 0
  • 寫在前面 本篇文章是《The Python Tutorial》(3.6.1),第九章,類的譯文。 9. Class...
    理查德成閱讀 833評論 0 8
  • 下雨的時候,心情總是煩悶且不安的;你不理我的時候,我是萬劫不復(fù)且患得患失的。 昨晚一起吃飯,老趙一直都在提你的名字...
    韓朱珠閱讀 393評論 0 0
  • 愛叔從來都不按套路出題,這次也不例外。題目雖不難理解,可這個頭要怎么開呢?有趣的人遇到不少,先從誰開始呢?我決定了...
    雨涼城閱讀 691評論 17 17

友情鏈接更多精彩內(nèi)容