python-魔法方法

一.__del__方法  销毁魔术方法

触发时机:

当一个对象在内存中被销毁的时候自动执行

参数:

至少有一个self,接收对象

返回值:

作用:

在对象销毁的时候做一些操作

注意:

程序自动调用此方法,不需要我们手动调用。

情况:

(1)当程序全部结束之后,才会进行删除

(2)__del__会看对象的调用在哪里结束,如果结束直接运行del

二.__call__方法  函数

__call__():可以让类的实例具有类似于函数的行为,

进一步模糊了函数和对象之间的概念。

使用方式:

对象后面加括号,触发执行。即:对象() 或者 类()()

第一种情况:

__call__(*args,**kwargs),这种情况不用再我们调用的函数中加数值

第二种情况:

用Call写一个斐波拉契数列

 

class Fibonacci(object):
    def __call__(self,num):
        a,b = 1,1
        self.lst = []
        if num<=2:
            self.lst.append(a)
            self.lst.append(b)
        else:
            for i in range(1,num+1):
                self.lst.append(a)
                a,b = b,a+b
        return self.lst
fibo = Fibonacci()
ret = fibo(3)
print(ret)

三.__repr__方法  (__init__的备胎方法)

__repr__():改变对象的字符串显示

- 此方法是__str__()的备胎,如果找不到__str__()就会找__repr__()方法。

- %r 默认调用的是 __repr()方法,如果是字符串会默认加上 ''

-repr()方法默认调用__repr__()方法

 

现在我们来试一试: 

当有__str__函数的时候

当没有__str__函数的时候

还有一个用途(我表示并没有卵用的功能,想和str平分秋色)

输出是相同的

四.__new__方法

4.__new__

实例化魔术方法

触发时机

 在实例化对时触发

参数

至少一个cls 接收当前类

返回值

必须返回一个对象实例

作用

实例化对象

注意

实例化对象是Object类底层实现,其他类继承了Object的__new__才能够实现实例化对象。

没事别碰这个魔术方法,先触发__new__才会触发__init__

五.__str__方法

__str__

触发时机

使用print(对象)或者str(对象)的时候触发

参数

一个self接收对象

返回值

必须是字符串类型

作用

print(对象时)进行操作,得到字符串,通常用于快捷操作

 

六.__eq__和__hash__方法

首先,我们先了解

==和is的区别

is比较的是他们的内存地址是否相同
==比较的是他们的值是否想用

明白了这个,我们就可以利用hash试下

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值