關(guān)卡二:
1.練習(xí)題1
面向?qū)ο蟮睦斫?
要求:
在類內(nèi)定義一個(gè)可以重新設(shè)置私有屬性name的函數(shù)條件為字符串長(zhǎng)度小于10,才可以修改.
答:
def SetName(self, newname):
if len(newname) < 10:
self.__name = newname
else:
print("error:名字太長(zhǎng)!")
在創(chuàng)建一個(gè)類之后需要調(diào)用什么函數(shù)?
答:應(yīng)調(diào)用__del__()函數(shù).
del()方法是手動(dòng)調(diào)用還是類默認(rèn)調(diào)用?
答:手動(dòng)調(diào)用
如何訪問對(duì)象的屬性?
答:使用(.)來訪問對(duì)象的屬性
創(chuàng)建一個(gè)動(dòng)物類,并通過init方法接受參數(shù)(name),并打印init被調(diào)用.
class Animal(object):
# 初始化方法
# 創(chuàng)建完對(duì)象后會(huì)自動(dòng)被調(diào)用
def __init__(self, name):
print('__init__方法被調(diào)用')
self.__name = name
在動(dòng)物類中定義一個(gè)析構(gòu)方法,使其在刪除的時(shí)候自動(dòng)被調(diào)用,并打印del被調(diào)用.
def __del__(self):
print("__del__方法被自動(dòng)調(diào)用")
實(shí)例化一個(gè)dog對(duì)象取名"八公"
dog = Animal("八公")
將實(shí)例dog賦值給dog1和dog2.
dog1 = dog
dog2 = dog
print(" 刪除dog對(duì)象")
del dog
print(" 刪除dog1對(duì)象")
del dog1
print(" 刪除dog2對(duì)象")
del dog2
觀察運(yùn)行結(jié)果發(fā)現(xiàn)什么問題?
答:只有當(dāng)?shù)谌齻€(gè)對(duì)象被刪除的時(shí)候,dog對(duì)象才被正真的刪除.
上述結(jié)果說明什么問題?
答:
- 當(dāng)有1個(gè)變量保存了對(duì)象的引用時(shí),此對(duì)象的引用計(jì)數(shù)就會(huì)加1
- 當(dāng)使用del刪除變量指向的對(duì)象時(shí),如果對(duì)象的引用計(jì)數(shù)不會(huì)1,比如3,那么此時(shí)只會(huì)讓這個(gè)引用計(jì)數(shù)減1,即變?yōu)?,當(dāng)再次調(diào)用del時(shí),變?yōu)?,如果再調(diào)用1次del,此時(shí)會(huì)真的把對(duì)象進(jìn)行刪除
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號(hào)聯(lián)系: 360901061
您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對(duì)您有幫助就好】元
