38. Python 的魔法方法?

1、什么是魔法方法?

魔法方法就是可以给你的类增加魔力的特殊方法,如果你的对象实现(重载)了这些方法中的某一个,那么这个方法就会在特殊的情况下被 Python 所调用,你可以定义自己想要的行为,而这一切都是自动触发的。它们经常是两个下划线包围来命名的(比如 __init____lt__),Python的魔法方法是非常强大的,所以了解其使用方法也变得尤为重要!

1)__init__ 构造器,当一个实例被创建的时候初始化的方法。但是它并不是实例化调用的第一个方法,__new__才是实例化对象调用的第一个方法,它只取下 cls 参数,并把其他参数传给 __init__。 __new__很少使用,但是也有它适合的场景,尤其是当类继承自一个像元组或者字符串这样不经常改变的类型的时候。

2)__new__ 使用时注意以下四点:

  • a) __new__  是在一个对象实例化的时候所调用的第一个方法;
  • b)它的第一个参数是这个类,其他的参数是用来直接传递给 __init__ 方法;
  • c) __new__  返回一个构建的实例;
  • d) __new__  决定是否要使用该 __init__ 方法,因为 __new__ 可以调用其他类的构造方法或者直接返回别的实例对象来作为本类的实例,如果 __new__ 没有返回实例对象,则__init__ 不会被调用;
  • e) __new__  主要是用于继承一个不可变的类型比如一个 tuple 或者 string

3)__del__ 析构器,当实例被销毁时调用。

1)__call__ 允许一个类的实例像函数一样被调用。

2)__getitem__ 定义获取容器中指定元素的行为,相当于self[key]

3)__setitem__ 设置容器中指定元素的行为,相当于self[key] = value 。

1)__getattr__ ():当用户试图访问一个不存在属性时触发;

2)__getattribute__(): 当一个属性(无论存在与否)被访问时触发;

3)__setattr__ ():当一个属性被设置时触发;

4)__delattr__ ():当一个属性被删除时触发。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值