一、對象(objec)
1.什么是對象?
對象是內存中專門用來存儲數據的一塊區(qū)域。對象中可以存放各種數據(如:數字,布爾值,代碼..)
對象由三部分組成:
a:對象的標識(id)
b:對象的類型(type)
c:對象的值(value)
2.面向對象(oop):
python是一門面向對象的編程語言。
面向對象的語言,就是語言中所有的操作都是通過對象來進行的。
--關注的是對象而不關注過程。
--對于面向對象語言來說,一切都是對象。
--面向對象的編程思想,將所有的功能統一保存到對應的對象中。要使用某個功能,直接找到對應的對象即可。
--這種方式編寫的代碼,比較容易閱讀,易于維護,可復用性強。
--但是這種方式的編寫,不符合常規(guī)思維,編寫起來稍微麻煩一點。
面向過程的語言:
指的是,將程序的邏輯分解成為一個一個的步驟,通過對每個步驟的抽象,來完成程序。
--這種編程方式符合人類的思維,編寫起來相對簡單。
--通過完成一個一個小的步驟來完成一個程序,但是這種方式編寫代碼的往往只適用于一個功能。如果要實現別的功能,往往要重新編寫代碼,可復用性比較低,難于維護。
二、類(class)
--目前所學習的對象都是python內置的對象。
--但是內置對象并不能滿足所有的需求,所以我們開發(fā)中經常需要自定義一些對象。
--類,簡單理解它相當于一個圖紙。程序中我們需要根據類來創(chuàng)建對象。
--類就是對象的圖紙。稱對象是類的實例(instance)
--像是int()、float()、bool()、str()、list()、dict()...這些都是類。
? ?a=int(10)?這屬于int類的實例,等價于a = 10
我們自定義的類都需要使用大寫字母開頭,使用大駝峰命名法(帕斯卡命名法)
--類也是一個對象,是用來創(chuàng)建對象的對象;類是type類型的對象。


三、對象的創(chuàng)建流程
1.創(chuàng)建一個變量mc
2.在內存中創(chuàng)建一個新對象
3.將對象的id賦值給變量
四、類的對象
--類和對象都是對現實生活中或程序中內容的抽象。
--實際上所有的事物都由兩部分構成:
1.數據(屬性)
2.行為(方法)
在類的代碼塊中,我們可以定義變量和函數。
--變量會成為該類實例的公共屬性,所有的該類實例都可以通過對象.屬性名的形式訪問。
--函數會成為該類實例的公共方法,所有該類實例都可以通過?對象.方法名()的形式調用方法。
注意:方法調用時,第一個參數由解析器自動傳遞,所以定義方法默認傳遞一個參數,所以定義方法中至少要定義一個形參。

五、屬性和方法
1.實例為什么能訪問到類中的屬性和方法?
--類中定義的屬性和方法都是公共的,任何該類實例都可以訪問。
2.屬性和方法查找的流程?
--當我們調用一個對象的屬性時,解析器會先在當前對象中尋找是否含有該屬性,
如果有,則直接返回當前的對象的屬性值,
如果沒有,則去當前對象的類對象中去尋找,如果有則返回類的對象的屬性值,如果沒有則報錯!
3.類對象和實例對象都可以保存屬性(方法)
--如果這個屬性(方法)是所有的實例共享的,則應該將其保存到類對象中。
--如果這個屬性(方法)是某個實例獨有,則應該保存在實例對象中。

六、類的特殊方法init
1.創(chuàng)建對象的流程
--a:創(chuàng)建一個變量
--b:在內存中創(chuàng)建一個新對象
--c:__init__(self)方法執(zhí)行
--d:將對象的id賦值給變量

2.類的基本結構
class類名([父類]) :
? ? 公共的屬性...
? ? #對象的初始化方法
? ? def_ init_ (self,....):
? ? #其他的方法
? ? def method_ 1(self,....):
? ? def method_ 2(self,....):
...