python_Daily practice (每日一练) 96

系统 1347 0

关卡二:

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个变量保存了对象的引用时,此对象的引用计数就会加1
  2. 当使用del删除变量指向的对象时,如果对象的引用计数不会1,比如3,那么此时只会让这个引用计数减1,即变为2,当再次调用del时,变为1,如果再调用1次del,此时会真的把对象进行删除

更多文章、技术交流、商务合作、联系博主

微信扫码或搜索:z360901061

微信扫一扫加我为好友

QQ号联系: 360901061

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描下面二维码支持博主2元、5元、10元、20元等您想捐的金额吧,狠狠点击下面给点支持吧,站长非常感激您!手机微信长按不能支付解决办法:请将微信支付二维码保存到相册,切换到微信,然后点击微信右上角扫一扫功能,选择支付二维码完成支付。

【本文对您有帮助就好】

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描上面二维码支持博主2元、5元、10元、自定义金额等您想捐的金额吧,站长会非常 感谢您的哦!!!

发表我的评论
最新评论 总共0条评论