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)
本文来自博客园,作者:{admin-xiaoli},转载请注明原文链接:{https://www.cnblogs.com/crackerroot}
分类:
Python
标签:
Python之魔术方法
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架