python中自定义类中的self_Python类和构造方法
1.面向對象介紹
描述:是函數的一個變種,在Python中,有函數式編程和面向對象編程,java和C#之類只能把函數寫到類里,沒有函數式編程,所以只有面向對象,所以在Python中有了選擇,可能就變得有點麻煩,但是在Python里,函數式編程是可以完成所有的功能的,人都是想把事情變得越來越簡單,機械化,而在函數式編程中可以使用的代碼量和設計比較多,而可能幾行代碼面向對象就可以實現
分析:
a、Python: 支持函數式,支持面向對象
b、函數式可以做所有的事,但是是否合適?
c、示例
函數實現
描述:一般情況下,使用以下函數來實現打印,但是存在一個小問題,前三個和后三個的名字、年齡、性別都是一樣的,相當于各自傳了三次,在文件操作的情況下,首先找到文件路徑,打開文件進行操作,最后要關閉它,對于數據庫,實際上也是一樣的,要連接它首先知道它的服務器地址,賬戶密碼之類的,如果以下的示例比作數據,前面的名字、年齡,性別類似于數據庫的賬戶和密碼之類的,后面的內容就是在數據的增刪查改等操作,所以在這里的參數傳送不太合適
類的實現:定義類和創建對象
第一個版本:函數修改成類的形式
2.函數與類的對比
a. 定義
函數:
def + 函數名(參數)
面向對象:
- class ==> 類,如bar類,bar是類名
- def ==> 在類中有def是方法
- 類中的方法,第一個參數要寫self
b. 執行
函數:
函數名(參數)
面向對象:
- a.不對直接訪問方法,要先創建名稱 = 類名(),相當于創建一個中間人,通過它去訪問里面的方法,如obj.f()調用
- b.這個obj.f()中間人還有一個別名叫作對象,也可以叫作實例
- c.實際是類和對象的應用
Summary: 使用class關鍵字定義一個類,類中有方法,可以沒有方法,但是就沒有意義,相當于寫個模塊里面沒功能,然后創建一個對象,通過它來調用方法,而且類的方法就是函數,函數有返回值,類也有返回值
3.self是什么?
寫函數時可以傳參數,這個是形式參數,self單獨說就是一個形式參數,創建類class后的操作,在內存中有一個空間,在類的空間中創建一個方法fuc,創建中間人mid1,也就是在類名后加上括號就可以,相當于在內存里再開辟一段內存空間,mid1是根據類來創建的,中間人只能去找類中的方法,所以它與類之間要有一個關聯,在中間人內部有指向類,它叫做類對象指針
代碼執行過程:從上到下執行,遇到類又遇到方法,把代碼放到內存中,再執行中間人 = 類名(),也就是根據類名創建一個中間人,在內存中開辟新的內存空間,中間人是根據類名加了個括號,所以中間人與類之間是有關聯的,再通過中間人去執行方法時,中間人就要找到對應的類,再去類中找到方法,再執行,而且可以再創建一個中間人mid2,也是在類后加一個括號,也是有關聯,mid2也可以執行類中的方法
a. 字符串例子分析
b.self在類中的使用
中間人1 = 類名()代表一塊內存,中間人2 = 類名()代表的是另一塊內存,中間人1要執行類中的方法時,它是自己找類中的方法,而
中間人2也是找到類中同一個方法,類中有一個函數叫f(自定義),這個函數名有一個self,self是python自身傳入的參數,實際情況是,
中間人1去執行類中的方法時,self就是中間人1,中間人2執行類中的方法時,self就是中間人2
c. 測試self: self代指調用方法的對象(中間人)
d.self進一步分析
描述:中間人執行類中的方法時,會把自身傳過去,在類中的方法fuc中可以得到中間人,中間人中可以存放內容,中間人執行類中的方法時,可以得到中間人,所以它可以取得中間人里面的內容
z1與z封裝的值不一樣,都是一個中間人,共同引用類中的方法
第二個版本
第二個版本延伸到數據庫使用
描述:在數據庫中的增刪改查的操作,在它們的內部self都有三個值可以使用,也就沒必要一次性再重新給它傳入參數,方法中公用的要知道,在類中的方法里,公用的字段可以封裝到中間值中,如果不是公用的要傳什么就傳什么,把值放入到對象的過程叫封裝
4.構造方法
特殊作用:
obj = 類名()
實現兩個任務:一般情況執行方法時,是把自身內容傳入,這里執行方法時,是內部定義好了,自動會執行一個方法,那個方法名固定了,在內部調用時,會把自身也傳遞過程
a.創建對象
b.通過對象執行類中的一個特殊方法第三個版本修改
區別: 兩者區別是認證調用的
init的操作使用
描述:一般在創建對象時,會把一些公用的字段都放入init方法,init方法一般用于初始化,因為創建對象時,有些是需要先創建,當執行obj = 類(),python內部會自動調用init方法來執行,如果init中沒寫代碼,相當于沒有寫,所以init就是類后面加上括號,python自動執行
init的實例
實例1:
實例2:
實例3:
描述:如下人的例子,假設要每個人的血型都是0
轉自:Python攻克之路-類和構造方法 - Reid21 -侵刪
總結
以上是生活随笔為你收集整理的python中自定义类中的self_Python类和构造方法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: arcgis批量出图python代码_p
- 下一篇: python画五角星填充不同颜色_不同颜