Python学习手札(九)魔法方法

1.魔法方法

魔法方法总是被双下划线包围,比如__init__
魔法方法相当强大,面向对象的python的一切,总能在适当的时候被自动调用。
第一个参数应为cls或者self
注:cls:类方法,代表一个类的名称
self:实例方法,代表一个实例对象的名称

(1)基本的魔法方法

如__init__(self[, …])构造器,当一个实例被创建时调用的初始化方法
在这里插入图片描述
如__new__(cls[, …])在一个对象实例化的时候所调用的第一个方法。
在调用__init__初始化前,先调用__new__.
在这里插入图片描述在这里插入图片描述在这里插入图片描述
注:如果__new__没有正确返回当前类cls的实例,那__init__是不会被调用的。

下面看一个利用__new__实现单例模式。
在这里插入图片描述在这里插入图片描述
如__new__方法主要是当你继承一些不可变的class时,如int,str,tuple等,提供给你一个自定义这些类的实例化过程的途径。
在这里插入图片描述
如__del__(self) 析构器,当一个对象将要被系统回收时调用的方法。
在这里插入图片描述
在这里插入图片描述
如__str__(self):
当①打印一个对象时;②使用%s格式化:③str强转数据类型时(出现如上某种情况),会触发__str__。

如__repr__(self):
当有__str__存在时,执行__str__;当没有__str__存在时,执行__repr__。
当使用%r格式化时,触发__repr__。
在这里插入图片描述在这里插入图片描述
如__str__(self)的返回结果可读性强。得到便于人阅读的信息。
如__repr__(self)的返回结果更准确。目的在于调试,便于开发者使用。
在这里插入图片描述

(2)算术运算符

类型工厂函数,指的是不通过类而是通过函数来创建对象。
在这里插入图片描述
如__add__(self, other)定义加法的行为:+
如__sub__(self, other)定义加法的行为:-
在这里插入图片描述在这里插入图片描述

如__mul__(self, other)定义乘法的行为:*
如__truediv__(self, other)定义真除法的行为:/
如__floordiv__(self, other)定义整数除法的行为://
如__mod__(self, other)定义取模算法的行为:%
如__divmod__(self, other)定义当被divmod()调用时地行为
divmod(a, b) 把除数和余数运算结果结合起来,返回一个包含商和余数的元组(a//b, a%b)

print(divmod(7, 2))    #(3, 1)
print(divmod(8, 2))    #(4, 0)

在这里插入图片描述

(3)反算术运算符

反运算魔方方法,与算术运算符保持一一对应,不同之处多了一个“r”。
在这里插入图片描述
来个例子:
在这里插入图片描述

(4)增量赋值运算

在这里插入图片描述

(5)一元运算符

在这里插入图片描述

(6)属性访问

在这里插入图片描述
例子:
在这里插入图片描述在这里插入图片描述

(7)描述符

将某种特殊类型的类的实例指派给另一个类的属性。
在这里插入图片描述

(8)定制序列

在这里插入图片描述

在这里插入图片描述

(9)迭代器

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值