Python类常用的魔术方法
类的常用魔术方法:无需人为调用,基本是在特定的时刻自动触发,方法名被前后两个下划线包裹
__init__:构造函数。
__new__:对象实例化方法,其实这才是类里面第一个被调用的方法,在构造函数之前调用,之后才是__init__,只是这个比较特殊,一般不使用。
__call__:对象当函数的时候触发。
class A():def __init__(self,name = 0):print("哈哈,我是构造函数")def __call__(self):print("我是__call__函数")a = A()
a() #对象当函数使用,如果没有__call__函数会报错
__str__:当对象被当做字符串使用过的时候调用。
class A():def __init__(self,name = 0):print("哈哈,我是构造函数")def __str__(self):return "我只是一个例子"a = A()
print(a) #把对象当字符串使用
__repr__:返回字符串,跟__str__函数差不多。
以上都是属于操作类的
属性操作相关:
__getattr__:访问不存在属性的时候触发。
__setattr__:对成员属性进行设置的时候触发,有三个参数--
1,self用来获取当前对象
2,被设置的属性名称,以字符串形式出现
3,需要对属性名称设置的值
作用:进行属性设置的时候进行验证或者修改。注意:在该方法中不能对属性直接进行赋值操作,否则会陷入死循环
A():def __init__(self):passdef __setattr__(self, name, value):print("设置属性:{0}".format(name))self.name = value #这句语句会导致死循环a = A()
a.age = 18
所以为了避免死循环,规定统一调用父类魔法函数:
class A():def __init__(self):passdef __setattr__(self, name, value):print("设置属性:{0}".format(name))super().__setattr__(name,value) #super函数调用父类,避免死循环a = A()
a.age = 18
运算分类相关魔术方法:
__gt__:进行大于判断的时候触发的函数。
以上就是常用的一些魔术方法了。
Python类常用的魔术方法相关推荐
- (转)python类:magic魔术方法
原文:https://blog.csdn.net/pipisorry/article/details/50708812 版权声明:本文为博主皮皮http://blog.csdn.net/pipisor ...
- php如何在特定情况下触发,php类知识点滴---魔术方法,系统在特定时机触发的方法...
__get()获取私有或受保护属性时调用的方法 class coach { private $chairfit = "徐晓冬"; public function __constru ...
- Python中最全魔术方法整理
Python中的魔术方法 所谓魔法函数(Magic Methods),是Python的一种高级语法,允许你在类中自定义函数,并绑定到类的特殊方法中.比如在类A中自定义__str__()函数,则在调用s ...
- MultipartFile类常用的一些方法
2019独角兽企业重金招聘Python工程师标准>>> MultipartFile类常用的一些方法: String getContentType()//获取文件MIME类型 Inpu ...
- python进阶1:魔术方法
1.定义 在类里面,使用__xx__()形式的方法.这一类方法可以在类被构建的时候隐式调用,从而实现多种功能.也可以通过重载这些魔术方法,来实现自定义的功能. 2.常用的魔术方法 2.1 __new_ ...
- python定义私有变量的方法_Python怎么修改私有属性 如何访问python类中的私有方法...
python 类为什么不能定义私有属性和方法 因为b.name[0] = 'zhang'修改的是类属性,类属性是全局的,所有的实例共享,如果想私有化,可以添加 def __init__( self ) ...
- 浅谈Python类的属性和方法
浅谈Python类的属性和方法 参考文献 在python中,有私有属性和公有属性,方法我们也一样,他们之间有何区别? 还有类属性和实例属性又是怎么回事? 静态方法和类方法又有什么区别? 我们在工作过程 ...
- python 类中的 __getitem__方法
经常会遇到python类中遇到一些特殊的方法,最常见的就是__ini__方法,想必大家都遇到过,今天来谈谈另外一种非常好用的类方法--__getitem__ 来点干货, __getitem__的作用是 ...
- python DataFrame常用描述性统计分析方法
python DataFrame常用描述性统计分析方法 文章目录 python DataFrame常用描述性统计分析方法 sum() 求和 mean() 求平均值 max() 最大值 & mi ...
- Python 类常用各种方法及区别
Python中至少有三种比较常见的方法类型,即实例方法,类方法.静态方法.它们是如何定义的呢?如何调用的呢?它们又有何区别和作用呢?且看下文. 首先,这三种方法都定义在类中.下面我先简单说一下怎么定义 ...
最新文章
- 遗传:微生物组数据分析方法与应用
- 大华测试笔试题_互联网校招非技术岗的这三类笔试题目你都清楚了吗?
- 用了ReSharpe硬是爽
- python pyqt5 窗体自适应_Pyqt5自适应布局实例
- java tail -f 后返回_tail -f 的实现 | 学步园
- 惊!Kubernetes 将弃用 Docker,开发者们怎么办?
- 工作308:控制change
- filter过滤器实现验证跳转_返回验证结果
- linux脚本编写思想,Linux脚本编写入门基础(三)
- jvm对象从新生代到老年代_JVM内存管理、JVM垃圾回收机制、新生代、老年代以及永久代...
- BGP的同步规则分析
- android分享到新浪微博,认证+发送微博
- 第三阶段应用层——1.10 数码相册—main_page主界面的显存管理、页面规划、输入控制
- 支付宝客户端拉起支付
- 安卓手机变鼠标图文教程
- 关于旅游景点主题的HTML网页设计——北京景点 7页(带订单购物车)
- react中嵌入网页_react添加/嵌入 iframe
- 让QQ的文字漂亮起来
- robotframework 中ride数据丢失且关键词无法高亮
- MySQL中 反引号、单引号 和 双引号 的区别
热门文章
- 高通如何通过9008端口读取EMMC的分区
- CEPH浅析”系列之三——CEPH的设计思想
- 在linux环境下编译运行OpenCV程序的两种方法 - woshijpfgg
- FFmpeg的H.264解码器源代码简单分析
- 火狐查看html的隐藏域,IE/火狐/Chrome操作display:none对象所遇问题解答
- matlab 数值积分 截断误差,几种数值积分算法误差分析(10页)-原创力文档
- mysql自助完成翻页代码_MySql实现翻页查询功能
- mockito 外部接口_mockito – Spring批处理作业的端到端测试用例
- 异常处理1:复习、异常概述和异常体系结构
- 南华大学ACM队2021年7.14训练赛题解