Python3 魔法方法:构造和析构
1、魔法方法的特点:
魔法方法总是被双下划线包围例如:__init__
2、__new__(cls,[....])
__new__是在对象实例化后所调用的第一个方法,与其他方法不同他的第一个参数不时self而是cls因为,而其他参数会直接传递给__init__方法.
注意:__new__方法的主要任务是返回一个实例对象,通常是cls这个类实例化的对象,当然你也可以返回其他对象
开方法主要在改写一些内置函数的时候使用
#定义一个Nint类型,传入参数为字符串的时候返回该字符串所有字符的ASCII码之和 class Nint(int): def __new__(cls, arg=0): if isinstance(arg, str): total = 0 for each in arg: total += ord(each) arg = total return int.__new__(cls, arg)
3、__init__(self,[....])(构建函数)
__init__方法在类被实例化之后会被自动调用,可以重写这个方法为对象指定初始化方案
__init__方法无返回,即返回值必须为None
下面是一种错误的做法
class Test: def __init__(self, x, y): return x + y
4、__del__(self)(析构函数)
在对象被销毁(注:垃圾回时机制回收这个对象时才会被调用)时会自动调用这个函数
class A: def __del__(self): print('正在调用__del__函数') >>> a=A() >>> b=a >>> c=a >>> del c >>> delb >>> del b >>> del a#到这里才删除了对象a 正在调用__del__函数
【推荐】2025 HarmonyOS 鸿蒙创新赛正式启动,百万大奖等你挑战
【推荐】博客园的心动:当一群程序员决定开源共建一个真诚相亲平台
【推荐】开源 Linux 服务器运维管理面板 1Panel V2 版本正式发布
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 复杂业务系统线上问题排查过程
· 通过抓包,深入揭秘MCP协议底层通信
· 记一次.NET MAUI项目中绑定Android库实现硬件控制的开发经历
· 糊涂啊!这个需求居然没想到用时间轮来解决
· 浅谈为什么我讨厌分布式事务
· 那些年我们一起追过的Java技术,现在真的别再追了!
· 还在手写JSON调教大模型?.NET 9有新玩法
· 为大模型 MCP Code Interpreter 而生:C# Runner 开源发布
· 面试时该如何做好自我介绍呢?附带介绍样板示例!!!
· JavaScript 编年史:探索前端界巨变的幕后推手