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

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