Python教程

2021-08-26 Python之魔术方法

本文主要是介绍2021-08-26 Python之魔术方法,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

#魔术方法

'''
__init__:初始化魔术方法
触发时机:初始化对象时触发,不是实例化触发,但是和实例化触发在一个操作中


__new__:实例化的魔术方法
触发时机:在实例化时触发


__call__:对象调用方法
触发时机:将对象当成函数使用的时候,会默认调用此函数中的内容


__str__:
触发时机:打印对象名,自动触发去调用__str__里面的内容
注意:一定要在__str__方法中添加return,return后面的内容就是打印对象看到的内容


__del__:delete的缩写 析构魔术方法
触发时机:当对象没有用的时候被触发(没有任何变量引用)

__del__:
1.对象赋值
p=person()
p1=p
说明:p, p1共同指向一个地址
2.删除地址的引用
del p1 删除p1对地址的引用
3.查看对地址的引用次数
import sys
sys.getrefcount()
4.当一块空间没有了任何引用,默认执行__del__
ref=0

'''

 1 import sys
 2 
 3 class person:
 4     
 5     def __init__(self,name):
 6         print('-------->init')
 7         self.name=name
 8 
 9     def __new__(cls,*args,**kwargs):
10         print('--------->new')
11         position=object.__new__(cls)
12         print(position)
13         return position
14 
15     def __call__(self,name):
16         print('--------->call')
17         print('执行对象得到的参数是:',name)
18 
19     def __del__(self):
20         print('----------->del--------')
21         
22 
23 p=person('ja')
24 p('jack')
25 
26 p1=p
27 p2=p
28 
29 print(p)
30 print(p.name)
31 print(p1.name)
32 print(p2.name)
33 
34 p1.name='tom'
35 print(p.name)
36 print(p2.name)
37 
38 del p1
39 print('删除后:',p.name)
40 
41 del p2
42 print('删除后:',p.name)
43 
44 print(sys.getrefcount(p))

#魔术方法
'''
__str__:
触发时机:打印对象名,自动触发去调用__str__里面的内容
注意:一定要在__str__方法中添加return,return后面的内容就是打印对象看到的内容
'''

 1 class person:
 2     def __init__(self,name,age):
 3         self.name=name
 4         self.age=age
 5 
 6     def __str__(self):
 7         return '姓名是:'+self.name+'年龄是:'+str(self.age)
 8 
 9 p=person('tom',13)
10 print(p)

 

这篇关于2021-08-26 Python之魔术方法的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!