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

歡迎訪問 生活随笔!

生活随笔

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

python

Python中类、对象与self详解

發布時間:2023/11/29 python 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Python中类、对象与self详解 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

先介紹一下python中的類與對象/實例。然后詳細說明self。說明:對象等同實例,本文稱呼不一致時請自行統一

【一】類與對象/實例

1、類

  (1)類由名稱、屬性、方法三部分組成

  (2)類是抽象模板,比如學生,汽車可以用Student、Car類來表示

  (3)類命名規范:數字、字母、下劃線,數字不能開頭;要駝峰式命名

  (4)定義類:

    第一種:class 類名:(冒號縮進,代碼塊內含屬性與方法)

    第二種:class 類名(object):(--(Object)表示該類從哪個類繼承下來的,Object類是所有類都會繼承的類。--)

#子類繼承父類 class Parent:def pprt(self):print(self)class Child(Parent): #表示子類從父類繼承def cprt(self):print(self) c = Child() c.cprt() # Child類的實例 c.pprt() #self指的是Child類的實例,父類Parent中定義了pprt()方法 p = Parent() p.pprt() # Parent類的實例

  (5)關于self:類函數需要定義一個‘self’,不用理會不需要賦值;self不是py關鍵字,但是必填;self可以用其他參數替代,如“this、a”,只是約定俗稱

  (6)如下圖:p.sayhello() ,實際上Python解釋成Person.sayhello(p),也就是說把self替換成類的實例

# 實例說明self代表是是對象/實例本身,而非類本身(類中包含多個對象)
#
self不必非寫成self,可以其它參數代替,只是約定俗成,但必須寫
class Person:def sayhello(self):print(self)print('***********分割線*************')print('My name is:linda') p=Person() p.sayhello() #等同:Person.sayhello(p) # 如果我們的定義和調用時均不傳類實例是可以的,這就是類方法 class Person:def sayhello():print()print('***********分割線*************')print('My name is:linda') p=Person() Person.sayhello() # 定義和調用均不傳類實例

2、對象/實例

  (1)對象是由類 創建出來的實體,對象也稱實例

  (2)對象要從類中繼承方法,具有類里面所有屬性和方法的使用權限

  (3)創建方式:對象名 = 類()?? ---如: tom = Person()

class Person:def sayhello(self):print(self)print('***********分割線*************')print('My name is:linda') p=Person()

3、__init__方法: ---也叫 初始化方法

    類中定義了__init__方法,則表示在創建對象時系統會默認調用此方法,也叫初始化方法

    ? 由于類起到模板的作用,因此,可以在創建實例的時候,把我們認為必須綁定的屬性強制填寫進去。這里就用到Python當中的一個內置方法__init__方法,例如在Person類時,把name、age等屬性綁上去:

      

?

    說明:

    1、類在創建對象時就已經有默認的屬性(如創建一輛汽車時就已經注定這個車子是什么品牌,有幾個輪子等),所以類的屬性一般定義在__init__方法中

    2、__init__方法在創建對象時候被調用,所以屬性通過(對象 = Car(屬性))傳入方法中

    【注意點】(1)__init__方法的第一參數永遠是self,表示self指向創建的類實例本身,因而,在__init__方法內部,可以把各種屬性綁定到self,等同于綁定創建的實例本身

         (2)__init__方法 在創建實例時,不可傳入空的參數,必須傳入與__init__方法匹配的參數,但self不需要傳,Python解釋器會自己把實例變量傳進去

         (3)如上圖: self.name = name的意思就是把外部傳來的參數name的值賦值給Person類自己的屬性變量self.name

            ??????????? 說明:self就是指類本身,self.name就是Person類的屬性變量,是Person類所有。而name是外部傳來的參數,不是Person類所自帶的。

【二】self的詳細說明

1、說明:

  (1)# 實例說明self代表是是對象/實例本身,而非類本身(類中可包含多個對象)

  (2)# self不必非寫成self,可以其它參數代替,只是約定俗成,但必須寫  

  (3)# 如果我們的定義和調用時均不傳類實例也是可以的

    

2、關于類函數/類方法

  【?】類函數與普通函數的區別:

     僅在于類函數:第一參數永遠是類的本身實例變量self,調用時,不用傳遞該參數     

  (1)方法,通俗點來說就是函數; ---把每一項類中所有的功能封裝起來稱為方法,一般方法里的內容就是方法的執行過程

     方法多具有執行性

     舉例: 比如類表示的是People 也就是人?

? ? ? ? ? ?    人的類中會有一些屬性 這些屬性大概是 身高、體重、姓名等等

? ? ? ? ? ?    那么方法比如是 跑、吃、等等

class Person(object):def __init__(self, name, age):self.name = nameself.age = ageprint('我叫{0},我今年{1}歲'.format(self.name,self.age)) #我叫小明,我今年18歲 person=Person("小明",18) person.name person.age

      【說明】Person類實例本身擁有一些數據,那么要訪問這些數據,就不需要從外面的函數去訪問,可直接在Person類的內部定義訪問數據的函數(方法),這樣,就可以把”數據”封裝起來。

          這些封裝數據的函數是和Person類本身是關聯起來的,稱之為類的方法

          我們從外部看Person類,只需要知道,創建實例需要給出name和age。

          而如何打印,都是在Person類的內部定義的,這些數據和邏輯被封裝起來了,調用很容易,但卻不知道內部實現的細節。

          如果要讓內部屬性不被外部訪問,可以把屬性的名稱前加上兩個下劃線,在Python中,實例的變量名如果以開頭,就變成了一個私有變量(private),只有內部可以訪問,外部不能訪問

          這樣就確保了外部代碼不能隨意修改對象內部的狀態,這樣通過訪問限制的保護,代碼更加健壯

          (注意)Python中,變量名類似__xxx__的,也就是以雙下劃線開頭,且以雙下劃線結尾的,是特殊變量,特殊變量是可以直接訪問的,不是private變量,所以,不可以這樣命名

          

?

轉載于:https://www.cnblogs.com/nbnuan/articles/9805952.html

總結

以上是生活随笔為你收集整理的Python中类、对象与self详解的全部內容,希望文章能夠幫你解決所遇到的問題。

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