主要内容:从函数到高级魔法方法(魔法方法)、数据分析实战
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) 定义按位右移位的行为:>>