搜索
当前位置: sk彩票 > 对象字典 >

Python基础(面向对象编程)

gecimao 发表于 2019-05-01 01:05 | 查看: | 回复:

  欢迎关注天善智能,我们是专注于商业智能BI,人工智能AI,大数据分析与挖掘领域的垂直社区,学习,问答、求职一站式搞定!

  对商业智能BI、大数据分析挖掘、机器学习,python,R等数据领域感兴趣的同学加微信:tstoutiao,并注明消息来源,邀请你进入数据爱好者交流群,数据爱好者们都在这儿。

  你会觉得不可思议吧,但是确确实实是这样,当我们输出a的时候,实际上是输出a.__str__()方法,友谊之前我们没有写这个方法,所以就会调用object中的__str__方法,因为所有没有继承的类,默认是继承object类的,在子类中没有找到__str__方法就会去父类object中找。

  #那么这里为什么会直接输出一个列表,而不是一个内存地址,实际上就是重构了__str__方法。

  print(我的名字是%r%p) # 输出 我的名字是张三 %r就是调用的__repr__()方法,同理%s?你应该懂吧。如果我们不写repr方法,它就会调用父类的方法,会输出一个内存地址。

  注:当我们在类中写了repr方法,没有写str方法,我们再次输出str(Person)他不会输出内存地址,会输出repr中的内容,我们理解为他找不到str方法就会找repr方法,repr方法再没有就会输出内存地址,但是反过来不行。(莫名的备胎)这个repr方法也必须返回字符串。

  报错了,说明删除了name这个属性,并且执行力__del__中的方法。和上面两个不一样。

  注:放我们调用完这个一会执行__del__方法,但是没有删除变量。python这个方法内部有个引用计数机制,

  可以看到,我们并没有调用__del__方法,但是再调用完之后会自动调用这个方法。并且看一下执行顺序,也就是说,先输出,再调用__del__方法。也就是说先执行__del__中的方法,再进行删除,也就是说我们可以在__del__写一些收尾工作,比如f.close()。

  我们实例化之类后,a[name],就是调用内置方法__getitem__中的内容。

  这样就删除了,其实我会觉得像删除不是有方法吗,这种方法是以将对象以字典的形式查,那么对于字典和列表你可能又有了新的认识。在object中对应的是__delattr__方法。

  我们知道__init__是在实例化的时候就会执行,在他之前会执行__new__方法。

  __new__可以决定调用哪个类的_init_方法,如果有两个类,并且是继承关系,就可以选择调用父类的__init__方法,__init__的self就是__new__实例化的结果。有兴趣的可以去了解一下。

  就会返回True,但是也不能这样写是吧,我们判断名字相等就让他返回True

  福利:文末扫码立刻关注公众号,“Python爱好者社区”,开始学习Python课程:

  玩转大数据分析!Spark2.X+Python 精华实战课程免费学习视频。返回搜狐,查看更多

本文链接:http://moodyjews.net/duixiangzidian/278.html
随机为您推荐歌词

联系我们 | 关于我们 | 网友投稿 | 版权声明 | 广告服务 | 站点统计 | 网站地图

版权声明:本站资源均来自互联网,如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

Copyright @ 2012-2013 织梦猫 版权所有  Powered by Dedecms 5.7
渝ICP备10013703号  

回顶部