Python3 魔法函数(简单了解)

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的顺序就可以了

这节就讲到这,讲的不怎么好,不怎么具体,有待补充。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值