中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

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

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Python類和對象怎么用

發布時間:2021-12-28 16:07:52 來源:億速云 閱讀:112 作者:小新 欄目:開發技術

小編給大家分享一下Python類和對象怎么用,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!

  說是要“找對象”,我們第一個看的卻是個叫作“類”的語法結構。這里的類其實和我們日常生活中的“類”的概念差不多。日常生活中,我們把相近的東西歸為一類,而且給這個類起一個名字。比如說,鳥類的共同屬性是有羽毛,通過產卵生育后代。任何一只特別的鳥都是建立在鳥類的原型基礎上的。 
  下面我們用Python 語言來記錄上面的想法,描述鳥類:

class Bird(object): feather = True reproduction = "egg"

  在這里,我們用關鍵字class 來定義一個類。類的名字就是鳥(Bird)。括號里有一個關鍵詞object,也就是“東西”的意思,即某一個個體。在計算機語言中,我們把個體稱為對象。一個類別下,可以有多個個體。鳥類就可以包括鄰居老王養的金絲雀、天邊正飛過的那只烏鴉,以及家里養的一只小黃雞。 
  冒號和縮進說明了屬于這個類的代碼。在隸屬于這個類別的程序塊中,我們定義了兩個量,一個用于說明鳥類有羽毛(feather),另一個用于說明鳥類的繁殖方式(reproduction),這兩個量稱為類的屬性(attribute)。我們定義鳥類的方法很粗糙,鳥類只不過是“有毛能產蛋”的東西。要是生物學家看到了大概會暗自搖頭,但我們畢竟邁出了模擬世界的第一步。 
  我們除了用數據性的屬性來分辨類別外,有時也會根據這類東西能做什么事情來區分。比如說,鳥會移動。這樣,鳥就和房屋的類別就區分開了。這些動作會帶來一定的結果,比如移動導致位置的變化。這樣的一些“行為”屬性稱為方法(method)。Python 中,一般通過在類的內部定義函數來說明方法。

class Bird(object): feather = True reproduction = "egg" def chirp(self, sound): print(sound)

  我們給鳥類新增一個方法屬性,就是表示鳥叫的方法chirp()。方法chirp()看起來很像一個函數。它的第一個參數是self,是為了在方法內部引用對象自身,我將在后面詳細解釋。需要強調的是,無論該參數是否用到,方法的第一個參數必須是用于指代對象自身的self。剩下的參數sound 是為了滿足我們的需求設計的,它代表了鳥叫的內容。方法chirp()會把sound 打印出來。

對象

  我們定義了類,但和函數定義一樣,這還只是打造兵器的過程。為了使用這個利器,我們需要深入到對象的層面。通過調用類,我們可以創造出這個類下面的一個對象。比如說,我養了一只小雞,叫summer。它是個對象,且屬于鳥類。我們使用前面已經定義好的鳥類,產生這個對象:

summer = Bird()

  通過這一句創建對象,并說明summer 是屬于鳥類的一個對象。現在,我們就可以使用鳥類中已經寫好的代碼了。作為對象的summer 將擁有鳥類的屬性和方法。對屬性的引用是通過對象.屬性(object.attribute)的形式實現的。比如說:

print(summer.reproduction) # 打印'egg'

  用上面的方式,我們得到summer 所屬類的繁殖方式。 
  此外,我們還可以調用方法,讓summer 執行鳥類允許的動作。比如:

summer.chirp("jijiji") # 打印'jijiji'

  在調用方法時,我們只傳遞了一個參數,也就是字符串”jijiji”。這正是方法與函數有所區別的地方。盡管在定義類的方法時,我們必須加上這個self 參數,但self 只用能在類定義的內部,所以在調用方法時不需要對self 傳入數據。通過調用chirp()方法,我的summer 就可以叫了。 
  到現在為止,描述對象的數據都存儲于類的屬性中。類屬性描述了一個類的共性,比如鳥類都有羽毛。所有屬于該類的對象會共享這些屬性。比如說,summer 是鳥類的一個對象,因此summer 也有羽毛。當然,我們可以通過某個對象來引用某個類屬性。 
  對于一個類下的全部個體來說,某些屬性可能存在個體差異。比如說,我的summer 是黃色的,但并非所有的鳥兒都是黃色的。再比如說人這個類。性別是某個人的一個性質,不是所有的人類都是男,或者都是女。這個性質的值隨著對象的不同而不同。李雷是人類的一個對象,性別是男。韓美美也是人類的一個對象,性別是女。 
  因此,為了完整描述個體,除了共性的類屬性外,我們還需要用于說明個性的對象屬性。在類中,我們可以通過self 來操作對象的屬性。現在我們拓展Bird 類:

class Bird(object): def chirp(self, sound): print(sound) def set_color(self, color): self.color = color


summer = Bird()
summer.set_color("yellow")
print(summer.color) # 打印'yellow'

  在方法set_color()中,我們通過self 參數設定了對象的屬性color。和類屬性一樣,我們能通過對象.屬性的方式來操作對象屬性。由于對象屬性依賴于self,所以我們必須在某個方法內部才能操作類屬性。因此,對象屬性沒辦法像類屬性一樣,在類下方直接賦初值。 
  但Python 還是提供了初始化對象屬性的辦法。Python 定義了一系列特殊方法。特殊方法又被稱為魔法方法(Magic Method)。特殊方法的方法名很特別,前后有兩個下畫線,比如init()、add()、dict()等。程序員可以在類定義中設定特殊方法。Python 會以特定的方式來處理各個特殊方法。對于類的init()方法,Python 會在每次創建對象時自動調用。因此,我們可以在init()方法內部來初始化對象屬性:

class Bird(object): def __init__(self, sound): self.sound = sound
print("my sound is:", sound) def chirp(self): print(self.sound)


summer = Bird("ji")
summer.chirp() # 打印'ji'

  在上面的類定義中,我們通過init()方法說明了這個類的初始化方式。每當對象建立時,比如創建summer 對象時,init()方法就會被調用。它會設定sound 這個對象屬性。在后面的chirp()方法中,就可以通過self 調用這一對象屬性。除了設定對象屬性外,我們還可以在init()中加入其他指令。這些指令會在創建對象時執行。在調用類時,類的后面可以跟一個參數列表。這里放入的數據將傳給init()的參數。通過init()方法,我們可以在創建對象時就初始化對象屬性。 
  除了操作對象屬性外,self 參數還有另外一個功能,就是能讓我們在一個方法內部調用同一類的其他方法,比如:

class Bird(object): def chirp(self, sound): print(sound) def chirp_repeat(self, sound, n): for i in range(n):
self.chirp(sound)

summer = Bird()
summer.chirp_repeat("ji", 10) # 重復打印'ji'10 次

  在方法chirp_repeat()中,我們通過self 調用了類中的另一個方法chirp()。

以上是“Python類和對象怎么用”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

昌图县| 荆门市| 田东县| 辰溪县| 黔西县| 伊宁市| 钟祥市| 稷山县| 阆中市| 磴口县| 和田县| 襄垣县| 普定县| 大姚县| 新疆| 太湖县| 石台县| 武威市| SHOW| 铅山县| 乡城县| 平罗县| 正宁县| 叶城县| 开远市| 苍溪县| 郓城县| 繁昌县| 舒兰市| 唐海县| 区。| 安顺市| 新昌县| 米林县| 黄石市| 宝山区| 徐水县| 监利县| 洛隆县| 泗阳县| 青川县|