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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

8.类定义、属性、初始化和析构

發布時間:2023/12/18 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 8.类定义、属性、初始化和析构 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

? ? ? ? 類定義? ? ? ?

類 是一個獨立存放變量(屬性/方法)的空間

封裝:

類可以把各種對象組織在一起,作為類的屬性,通過 . (點)運算符來調用類中封裝好的對象

屬性:

變量在類中稱為屬性,但是類中的屬性不僅僅只包含變量,函數等其他的對象也可以作為類的屬性

類的定義:關鍵字class

是一類事物的抽象,不是真是存在的。 描繪了該類事物的共性, 例如:“人類”、“貓類”、“狗類

創建實例:

某類事物的具體個體,是該類事物的具體表現,它是真實存在的。 例如:“炎志”是具體的某個“人” ''墨染''是某個具體的’人’ “加菲貓”是具體的某個“貓” ''湯姆貓'' 是某個具體的’貓‘

實例名 = 類名()

?

一個“實例”的“特征”,就是“屬性”

名字不一樣, 身高不一樣, 年齡不一樣, 大小也不一樣

類屬性和實例屬性

類屬性:在類里面定義的屬性,可以通過類和實例訪問

實例屬性:通過實例定義的屬性,只能通 過實例訪問

類的私有屬性

在python中有兩私有屬性,分別是在屬性前加 一個下換線(_) 和 兩個 下劃線(__)

_x: 意義在于喚起用戶的注意,看成私有屬性,類對象和子類可以訪問

__xx:雙前置下劃線,避免與子類中的屬性命名沖突,無法在外部直接訪問

(名字重整所以訪問不到)

?

私有屬性: 在 Python 中, _ 和 __ 的使用 更多的是一種規范/約定, 沒有真正限制的目的

? ? ? 方法? ? ? ?

類中的方法,就是函數

通常,將默認會傳入的那個參數命名為self,用來表示調用這個方法的實例對象本身。

方法總是定義在類中的,但是卻叫“實例方法”,因為它表示該類所有實例所共有的行為

方法的調用和屬性調用一樣,通過點操作符調用,傳參和函數傳參一樣

class Hero(object):def move(self): #self代表實例本身,那個實例調用就代表那個實例print("%s走向戰場"%self.name) #yanzhi.name #moran.namedef skill(self):print("%s使用了技能:砍一刀"%self.name) #在類中定義的方法叫實例方法不叫類方法yanzhi = Hero() moran = Hero() yanzhi.name = '炎志' moran.name = '墨染' print(yanzhi.name) yanzhi.move() yanzhi.skill() print("=========================================") print(moran.name) moran.move() moran.skill()炎志 炎志走向戰場 炎志使用了技能:砍一刀 ========================================= 墨染 墨染走向戰場 墨染使用了技能:砍一刀

? 初始化和析構?

一、初始化”特殊方法

在Python中有很多以雙下劃線開頭且以雙下劃線結尾的固定方法。

他們會在特定的時機被觸發執行。

__init__ 就是其中之一,它會在實例化之后自動被調用。以完成實例的初始化。

class Hero(object):def __init__(self,name,HP):self.name = nameself.HP = HPdef move(self): #self代表實例本身,那個實例調用就代表那個實例print("%s走向戰場"%self.name) #yanzhi.name #moran.namedef skill(self):print("%s使用了技能:砍一刀"%self.name) #在類中定義的方法叫實例方法不叫類方法 yanzhi = Hero('炎志',3000) moran = Hero('墨染',2500) print(yanzhi.name) print(yanzhi.HP) yanzhi.move() yanzhi.skill() print("=========================================") print(moran.name) print(moran.HP) moran.move() moran.skill()炎志 3000 炎志走向戰場 炎志使用了技能:砍一刀 ========================================= 墨染 2500 墨染走向戰場 墨染使用了技能:砍一刀

二、__init__ 的參數傳遞過程

?

三、基于變量計數的對象銷毀機制

當沒有一個變量指向某個對象的時候,Python會自動銷毀這個對象,以便回收內存空間。

del 關鍵字,可以刪除一個變量的指向。

?__del__”就是一個析構函數了,當使用del 刪除對象時,會調用他本身的析構函數。 提示開發者,對象被銷毀了,方便調試。 進行以寫必要的清理工作。

#代碼運行完自動銷毀 class Hero(object):def __init__(self,name,HP):self.name = nameself.HP = HPdef __del__(self):print(self.name,'被銷毀了')def move(self): #self代表實例本身,那個實例調用就代表那個實例print("%s走向戰場"%self.name) #yanzhi.name #moran.namedef skill(self):print("%s使用了技能:砍一刀"%self.name) #在類中定義的方法叫實例方法不叫類方法 yanzhi = Hero('炎志',3000) moran = Hero('墨染',2500) print(yanzhi.name) print(yanzhi.HP) yanzhi.move() yanzhi.skill() print("=========================================") print(moran.name) print(moran.HP) moran.move() moran.skill()炎志 3000 炎志走向戰場 炎志使用了技能:砍一刀 ========================================= 墨染 2500 墨染走向戰場 墨染使用了技能:砍一刀 墨染 被銷毀了 炎志 被銷毀了 class Hero():def __init__(self,name,HP):self.name = nameself.HP = HPdef __del__(self):print(self.name,'被銷毀了')def move(self):print('%s向前移動兩步'%self.name)def skill(self):print('%s使用了一個技能'%self.name)yanzhi = Hero('炎志',3000) moran = Hero('墨染',3000) yanzhi.move() del yanzhi #主動銷毀 moran.move() moran.skill() 炎志向前移動兩步 炎志 被銷毀了 墨染向前移動兩步 墨染使用了一個技能 墨染 被銷毀了

?

轉載于:https://www.cnblogs.com/lyh-520/p/9293779.html

總結

以上是生活随笔為你收集整理的8.类定义、属性、初始化和析构的全部內容,希望文章能夠幫你解決所遇到的問題。

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