前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Python知识点笔记-面向对象进阶篇

Python知识点笔记-面向对象进阶篇

作者头像
小蓝枣
发布2020-09-25 15:23:04
3080
发布2020-09-25 15:23:04
举报

python知识点范围:magic method魔术方法

  • magic method魔术方法是前后有两个下划线的属性;
  • 创建对象的方法def __new__(cls ),重写的话可能需要一个星号和两个星号的参数;
  • 销毁对象用__del__(),由python回收机制调用;
  • 对象之所以可以比较是因为有运算符魔术方法属性,只要能比较的都有的;
  • 比较运算符__cmp__(self, other)【eq, lt, gt】
  • 数字运算符__add__(self, other)【sub, mul, div】
  • 逻辑运算符__or__(self, other)【and】
  • python运行首先要经过ebal这个函数,它只能识别机器字符串,用__repr__这个魔术方法来转化;
  • __str__, __unicode__方法也是返回字符串的,str是直接打印对象时调用的;
  • __dir__可以控制调用dir()时要返回的内容;
  • 大部分的内建方法都是有对应魔术方法的,我们自己可以多多总结;
  • __setattr__每次设置时都会调用;
  • __getattr__, getattribute__查询魔术方法,每次没访问到和访问时会调用;
  • 设置和查询魔术方法要防止无限递归,容易出错;
  • 递归1万次会报错;
  • python本身没有访问控制,加了双下划线实际只是改了名字,我们仍然可以访问到;
  • __delattr__删除时会访问到;
  • python2里什么都不继承算是老式类,缺少一些功能;
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019-02-11 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档