python中面向物件
2023-01-23由 積小流以至大海 發表于 農業
系統程式設計是什麼意思啊
Python 從設計之初就已經是一門面向物件的語言,正因為如此,在 Python 中建立一個類和物件是很容易的。
在面向物件的範疇內,“萬事萬物皆物件”,皆有其屬性和功能。屬性和功能通常被封裝在一起,共同體現
物件(事物)的特性,屬性和功能相輔相承,不能分割。
人們研究物件的目的是為了更加清楚地認識物件,發現物件之間的關係,而抽象的結果往往有兩個:
1)
該物件本質上屬於已經存在的分類。
2)
該物件不屬於任何已經存在的分類,我們將之命名為一個新的分類。(這就像生物學家對生物進行分類一
樣
<
界門綱目科屬種
>
)
當我們抽象出分類之後,就可以把分類當成一個模子,去認識其他物件。
在人類世界中,先有分類還是先有物件?
答:在自然界中有的物件一直都存在,人類在熟悉並理解之後,為其進行了命名,我們可以說先有物件而後有分
類;但也有一些東西,是人類自己發明的,這時往往是先有分類,而後有物件。例如:現在我們提到“自拍杆”,
你的大腦中立刻會有一個大致的形象。
分類和物件之間是什麼關係?
答:類是模子,而物件是利用這個模子生產出來的東西;類像一個崗位描述,而物件是這個崗位上實際的工作者;
類是房子的模型或設計圖紙,而物件是根據模型或圖紙造出來的房子;類是抽象的,而物件是實在的。
一、程式碼表達
說明:
我們在型別 Student 的 6 到 7 行添加了一個做自我介紹的功能 sayHi,然後在 13 行進行輸出。在
類的內部,使用 def 關鍵字來定義一個方法,與一般函式定義不同,類方法必須包含引數 self, 且為第一個參
數,self 代表的是類的例項。
類的方法與普通的函式只有一個
特別的區別
——
它們必須有一個額外的
第一個參
數名稱
,
按照慣例它的名稱是
self,
但是呼叫的時候卻不用傳參,看
13
行的呼叫,即
self
這個引數不用傳。
實際上, sayHi 是個物件函式,也就是說,如果 sayHi 函式正在執行,則必是某個已經被創建出來的物件,
而此時 sayHi 中的 self。name 的 self,就是這個物件的代稱,我們可以使用 self 來訪問這個物件中的所有內容。
二、建構函式
在上例之中,第 9 行建立物件,在隨後的 1 行中,對物件的原始值進行修改,如果都要改要足足使用 3 行代
碼,
有沒有一種方式在建立物件的同時,直接修改物件內部屬性的值呢?答案是肯定的,建構函式就是來解
決這個問題的
建構函式做了啥?
答:
1)、建構函式負責物件的建立,初始化內部成員;
2)、帶回物件的地址,並存儲到第 3 行程式碼的 stu 中。
3)、構造器方法,在建立一個物件時預設被呼叫,不需要手動呼叫
建構函式編寫時的注意事項:
1、建構函式是一個名為__init__() 的特殊方法(構造方法);
2、類的例項化操作會自動呼叫
__init__()
方法
;如 stu = Student()
3、
__init__()
方法可以有引數,引數透過
__init__()
傳遞到類的例項化操作上
。如:stu = Student(“胡
歌”,180,“男”)
4、
self 代表類的例項,而非類;self 代表的是類的例項,代表當前物件的地址,而 self。class 則指向
類