python学习之魔法方法

魔法方法一览
点击这里
魔法方法就是 类的内置方法
__双下划线代表的就是这是私人方法,无法在外部调用
最主要的有
__ new __ 这个是创建对象时,第一个要使用的魔法方法
__ init __ 这个是进行初始化赋值的方法,也是第二个要使用的魔法方法
__ del __ 删除类的时候要进入的魔法方法
__ add __ 算术运算类,遇到 a+b 时会进入此方法
__ str __ 当打印类 的文本时候 会进入此方法

修饰符
类中定义了以下三个中的一个及以上被称作修饰符
__ set __
__ delete __
__ get __
就可以将用另外一个属性的类来代替这个修饰符,完成操作

定制序列
__len __ 对类调用 len()
__getitem __ 定义获取容器中指定元素的行为,相当于 self[key]
__setitem __ 定义设置容器中指定元素的行为,相当于 self[key] = value
__delitem __ 定义删除容器中指定元素的行为,相当于 del self[key]

其中对__len __重写,是因为 len( ) 的参数不能是类 ,外部调用 len(对象) 进然后入重写的 __len __方法中就是 调用 len(对象 . 属性) 函数去 操作真正储存 数列的哪个属性,所以实际不重写__len __方法,在外部调用时,len( 对象 . 属性)其实不会报错
但对 用户而言,不需要知道 具体的属性 , 直接调用 对象 会更简便。

迭代器
__ iter__ 在产生迭代时候调用
__ next __ 迭代的时候调用
因为 for 迭代 本质上是 内置函数 next() 和 iter()

class Fibs:
        def __init__(self):
            self.a=0
            self.b=1
        def __next__(self):
            self.a,self.b=self.b,self.a+self.b
            return self.a
        def __iter__(self):
            print('test')
            return self
fibs=Fibs()
for f in fibs:
    if f>1000:
        print(f)
        break

可以打断点理解一下

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值