python3常用魔法方法

python的魔法方法,可以为我们自定义的类添加一些额外的功能。也可以说,python的许多特性,都是通过魔法方法实现的。我们自定义的类里如果实现了这些魔法方法,也就拥有了python的这些特性。

类似于鸭子类型的概念,也就是你实现了鸭子的行为,那你就是鸭子类型

下面是一些常见的魔法方法和它们对应的特性。假定当前类名为 Test

方法调用解释用途
__new__(cls)t = Test()创建类实例的方法,接收参数为类本身,返回新的实例单例模式
__init__(self)t = Test()初始化实例。在__new__(cls)之后执行
__del__(self)del t删除实例或者关闭时调用。一般不需要手动调用数据连接类,可用于断开数据库连接
__call__(self)t()实例被调用时类装饰器,实例作为可调用对象时
__str__(self)print(t)打印输出实例给实例或者类添加文字说明
__getattr__(self, attr)s.namename属性不存在时调用实例不存在的属性或方法时调用可以实现动态匹配
__setattr__(self, attr)s.name='zhang'给属性赋值
__delattr__(self, attr)del s.name删除属性
__getitem__(self, item)t[0]根据索引获取值或切片时调用实现列表的特性
__setitem__(self, item)t[0]=1根据索引赋值
__delitem__(self, item)del t[0]删除索引值
__getattribute__(self, attr)getattr(t, attr)使用反射获取值时调用反射的实现
__eq__(self, other)t==1用==判断时调用注意==的使用
__bool__(self)if t:或者 bool(t)获取实例的bool注意此处的判断
__index__(self)[1,2][t]t被当做索引值时调用
__iter__(self)for i in t可迭代对象。返回一个迭代器实例可迭代对象
__next__(self)next(t)迭代器可迭代对象
__contains__(self, value)"aa" in t使用innot in实现序列的特性
__enter__(self)with t as e上下文管理器进入时,需要返回实例上下文管理器
__exit__(self, exc, val, trace)with t as e上下文管理器关闭时
__len__(self)len(t)获取长度序列的特性
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值