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)
复制代码

 

posted @   admin-xiaoli  阅读(61)  评论(0编辑  收藏  举报
编辑推荐:
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
阅读排行:
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架
点击右上角即可分享
微信分享提示