日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python中自定义类中的self_Python类和构造方法

發布時間:2024/7/23 python 47 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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类和构造方法的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。