python3中我们最熟悉的一个魔法函数
class A:
def __init__(self):
pass
这个函数是用来初始化的,我们写类时,经常会使用它来传入参数,也叫它构造函数。
下面我们来介绍这个__new__函数
这个函数呢?作用是实例化第一个被调用,返回一个对象
下面我们来举个例子:
class st(str):
def __new__(cls,string):
string=string.upper()
return str.__new__(cls,string)
d=st("abc")
print(d)
解释下,st类继承与str类,str类是系统的类。我们继承他,就拥有他的方法,这在上一节继承的内容了。
然后我们在创建类的时候,顺便把字符串变成大写,在返回
结果是ABC。这个内容作为了解即可
接下来讲个析构器 del(self)
意思是对象被销毁,python3内部存在一个垃圾回收机制,能自己回收内存中的垃圾
魔法函数1
int ,是一个工厂函数,类对象 int(“123”) 其实就是把一个字符串转为整数,int相当于一个类,我们实例化了一个类。python无处不对象
a+b其实是将2个对象加起来
下面我们为了学习,来恶搞一下
class Newint(int):
def __add__(self, other):
return int.__sub__(self,other)
def __sub__(self, other):
return int.__add__(self,other)
a=Newint(2)
b=Newint(3)
print(a+b)
我们重写int中的add,sub方法,把2这功能反过来,加法变成减法,减法变成加法。这也太坏了,误导小朋友了。
反运算:
a+b是2个对象相加,1+b,一个数字+一个对象,那么数字没有add运算,所以b采用反运算
class Nint(int):
def __radd__(self, other):
return int.__sub__(self,other)
a=Nint(5)
b=Nint(3)
print(a+b)
class Nint(int):
def __rsub__(self, other):
return int.__sub__(other,self)
a=Nint(5)
print(3-a) #3-a,运行反运算,5-3=2 如果修改other,self的顺序就可以了
这节就讲到这,讲的不怎么好,不怎么具体,有待补充。