python學(xué)習(xí)筆記6--類,方法,析構(gòu)

# *類

## 定義,屬性,初始化,析構(gòu)

#面向?qū)ο?,eg:自己做飯or別人做飯

#面向過程,eg:煮飯=洗菜-切菜-抄菜-出鍋-吃飯

#類 封裝一些共有的事物,把具有共有特點的事物放在一個類里

#命名規(guī)則:駝峰命名法(首字母大寫)

eg:

class GirlFriend:

? ? _sex='女'

? ? hobby='做飯'

? ? __age=18

xiaohua=GirlFriend#此處可加()也可不加,不加括號使用同原地址,加括號另開一空間

ruhua=GirlFriend()

print(xiaohua._sex,xiaohua.hobby)

print(id(xiaohua),id(ruhua))

xiaohua.study='超會學(xué)習(xí)'

ruhua.k='as'#實例(新地址)修改屬性,不會影響原類的屬性

print(ruhua.study)

print(xiaohua.k)#-->報錯

#_sex 一個下劃線 只是做一個簡單的標記,可以正常使用

#__age 兩個下劃線代表特有屬性,實例不能直接訪問,可通過dir查看訪問方式

print(xiaohua.__age)#-->報錯

print(xiaohua._GirlFriend__age)#dir查詢后

#注:python里無絕對私有

## 方法

#類里放函數(shù)既是方法

eg:

class Person:

? ? def __init__(self,name,girlfriend):#魔法方法,在python中以雙下劃線開頭和結(jié)尾的稱為魔法方法 每一個魔法方法都有其特有的作用

? ? ? ? self.name=name#__init__-->作用:初始化,實例化時傳屬性

? ? ? ? self.girlfriend=girlfriend

? ? def num(self):#self 誰去使用self self就是誰

? ? ? ? # print(xiaohong.name)

? ? ? ? # print(self.name)

? ? ? ? print('self的id是%s'%id(self))

? ? ? ? print(self.name)

? ? def op(self):

? ? ? ? print('%s和%s大吃一頓'%(self.name,self.girlfriend))

#xiaohong=Person('1','2')#實例化(實例時無法添加屬性)

#xiaohong.name='xiaohong'#此處self=小紅(實例化后可添加實例屬性)

# xiaohong.num()

# print('小紅的id是%s'%id(xiaohong))

# xiaohei=Person()

# xiaohei.num()#新起一個地址后,self的id值也隨之變化

hans=Person('寒沙','小姐姐')

hans.op()

hans.num()#實例屬性只針對于該實例

# 析構(gòu)

#clear 刪除所有元素 del 釋放該序列空間

#python的垃圾回收機制 程序運行完后所有內(nèi)存空間都會釋放

eg:

# li=[12,3,4]

# del li#釋放掉該空間

# print(li)#報錯

class Person:

? ? def __del__(self):

? ? ? ? print('這里調(diào)用了del方法,在刪除全部指向后')

x=Person()

del x#這里釋放了Preson所以后面不會調(diào)用del方法

print('*'*10)#程序執(zhí)行完后調(diào)用del方法

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容