在Python中,首字母大寫的名稱指的是類別。這個類別定義中的括號是空的,因為我們要從空白建立這個類別。我們寫了一個文件字串,對這個類別的功能作了描述。類別中的函數稱為方法。
以Student類別為例,在Python中,定義類別是透過class關鍵字:
class Student(object) : pass |
class後面緊接著是個類別名,即Student,類別名稱通常是大寫開頭的單詞,緊接著是( object),表示該類別是從哪個類別繼承下來的,通常,如果沒有合適的繼承類,就使用object類,這是所有類別最終都會繼承的類別。
class Student(object):
def __init__( self, name, score): self.name = name __init__() 是一個特殊的方法,建立新實例時,Python都會自動運行它。開頭和結尾各有 兩個底線 | ,這是一種約定,旨在避免Python預設方法與普通方法發生名稱衝突。在這個方法的定義中,
2.每個與類別相關聯的方法呼叫都會自動傳遞實參self ,它是一個指向實例本身的引用,讓實例能夠存取類別中的屬性和方法。 self 會自動傳遞,因此我們不需要傳遞它。 3.以self 為前綴的變數都可供類別中的所有方法使用,我們也可以透過類別的任何實例來存取這些變數。 4.self.name= name像這樣可透過實例存取的變數稱為屬性
5.物件導向程式設計的一個重要特點就是資料封裝。可以直接在類別的內部定義存取資料的函數,這樣,就把「資料」給封裝起來了。這些
封裝資料的函數是和Student類別本身是關聯起來的,我們稱之為類別的方法.
9.1.2根據類別建立實例
我們通常可以認為首字母大寫的名稱(如Dog )指的是類,而小寫的名稱(如my_dog )指的是根據類別創建的實例。 1、要存取實例的屬性,可使用
句點表示法my_dog.name
句點表示法在Python中很常用,這種語法示範了Python如何獲悉屬性的值。 2、根據Dog 類別建立實例後,就可以使用句點表示法來呼叫Dog 類別中定義的任何方法。
3、可依需求根據類別建立任意數量的實例。
9.2使用類別和實例
1.你需要執行的一個重要任務是修改實例的屬性。你可以直接修改實例的屬性,也可以寫法以特定的方式進行修改。
2.類別是建立實例的模板,而實例則是一個具體的對象,各個實例擁有的資料都互相獨立,互不影響;方法就是與實例綁定的函數,和普通函數不同,方法可以直接存取實例的數據;透過在實例上呼叫方法,我們就直接操作了物件內部的數據,但無需知道方法內部的實作細節。和靜態語言不同,Python允許對實例變數綁定任何數據,也就是說,對於兩個實例變量,雖然它們都是同一個類別的不同實例,但擁有的變數名稱都可能不同。
類別中的每個屬性都必須有初始值,即使這個值是0或空字串。在某些情況下,如設定預設值時,在方法__init__() 內指定這種初始值是可行的;如果你對某個屬性這樣做了,就無需包含為它提供初始值的形參。
直接在class中定義屬性,這種屬性是類別屬性:
#class Student(object):
# 在編寫程式的時候,千萬不要把實例屬性和類別屬性使用相同的名字,因為相同名稱的實例屬性將屏蔽掉類別屬性,但是當你刪除實例屬性後,再使用相同的名稱,訪問到的將是類別屬性。 9.2.2修改屬性的值可以以三種不同的方式修改屬性的值: 1.直接透過實例進行修改; 2.透過方法進行設定; 3.透過方法進行遞增(增加特定的值)。 9.2.3存取限制1.在Class內部,可以有屬性和方法,而外部程式碼可以透過直接呼叫實例變數的方法來操作數據,這樣,就隱藏了內部的複雜邏輯。 2.如果要讓內部屬性不被外部訪問,可以把屬性的名稱前加上兩個下劃線__,在Python中,實例的變數名稱如果以__開頭,就變成了一個私有變數(private),只有內部可以訪問,外部不能訪問。
3.改完後,對於外部程式碼來說,沒什麼變動,但是已經無法從外部存取實例變數.__name和實例變數.__score了:
4.這樣就確保了外部程式碼不能隨意修改物件內部的狀態,這樣透過存取限制的保護,程式碼更加健壯。但如果外部程式碼要取得name和score,可以為Student類別增加get_name和get_score這樣的方法:
以上是Python基礎學習之類的介紹的詳細內容。更多資訊請關注PHP中文網其他相關文章! 本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
最新問題
Python/MySQL無法正確持久化整數數據
在這裡不需要任何程式碼。我想要保存一個非常長的數字,因為我正在製作一個遊戲,需要保存分數。但是我測試了一下,將分數設定為25000000000,但在mysql中儲存為2147483...
來自於 2024-04-04 19:09:44
0
1
367
使用selenium想要點擊並在類別中定義URL
今天我需要另一個提示。我正在嘗試建立Python/Selenium程式碼,想法是點擊www.thewebsiteIwantoclickon下面是我正在處理的HTML範例。類別ent...
來自於 2024-04-04 14:14:44
0
1
3492
保留前X行,刪除表格行的方法
我在MySQLincident_archive中有一個包含數百萬筆記錄的大表,我想按created列對行進行排序,並保留前X行並刪除其餘行,最有效的方法是什麼。到目前為止,我用Py...
來自於 2024-04-01 18:32:54
0
1
347
如何使用 BeautifulSoup 抓取特定的Google天氣文字?
如何使用BeautifulSoup在Python中找到課程文本“美國紐約市”?嘗試複製影片進行練習,但不再有效。嘗試在官方文件中找到一些內容,但沒有成功。或者我的get_html_...
來自於 2024-04-01 14:06:14
0
1
308
相關專題
更多>
熱門教學
更多>
|