python魔法方法和普通方法_Python基础进阶笔记:魔法方法+数据分析实战(阿里云天池)...

主要内容:从函数到高级魔法方法(魔法方法)、数据分析实战

842cd28503bac63bf0f7910d875a1fef.gif

PART1

「 魔法方法 

魔法方法总是被双下划线包围,例如 _init_;

魔法方法面向Python的一切;

魔法方法总是在适当的时候被自动调用;

魔法方法的第一个参数应为 cls(类方法)或者 self(实例方法)。

  • cls :代表一个类的名称

  • self:代表一个实例对象的名称

1. 基本的魔法方法

  • _init_(self[,…]) 构造器,当一个实例被创建的时候调用的初始化方法。

  • _new_(cls[,…]) 在一个对象实例化的时候所调用的第一个方法,在调用 _init_ 初始化前,先调用 _new_ 。

    · _new_ 至少要有一个参数 cls ,代表要实例化的类,此参数在实例化时由Python解释器自动提供,后面的参数直接传递给 _init_ 。

    · _new_ 对当前类进行了实例化,并将实例返回,传给 _init_ 的self 。但是,执行了 _new_ 返回了,当前 cls 的实例,当前的 _init_ 才会进入。

  • 若 _new_ 没有正确返回当前类 cls 的实例,那 _init_ 是不会被调用的,即使是父类的实例也不行,将没有 _init_ 被调用。

  • _new_ 方法主要是当你继承一些不可变的 class 时(比如 int,str,tuple),提供给你一个自定义这些类的实例化过程的途径。

  • _del_(self) 析构器,当一个对象要被系统回收之时调用的方法。

  • _str_(self) :

    · 当你打印一个对象的时候,触发 _str_

    · 当你使用 %s 格式化的时候,触发 _str_

    · str 强转数据类型的时候,触发 _str_

  • _repr_(self) :

    · repr 是 str 的备胎

    · 有 _str_ 的时候执行 _str_ ,没有实现 _str_ 的时候,执行 _repr_

    · repr(obj) 内置函数对应的结果是 _repr_ 的返回值

    · 当你使用 %r 格式化的时候触发 _repr_

_str_(self) 的返回结果可读性强。也就是说, _str_ 的意义是得到便于人们阅读的信息。

_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)。

  • _pow_(self,other[,module]) 定义当被 power() 调用或 ** 运算时的行为

  • _lshift_(self,other) 定义按位左移位的行为:<<

  • _rshift_(self,other) 定义按位右移位的行为:>>

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值