一、构造方法
1、构造方法是Python类中的内置方法之一,它的方法名为__init__,在创建一个类对象时会自动执行,负责完成新创建对象的初始化工作。
2、只有一个参数的构造方法示例
class Student: #定义Student类 def __init__(self): #定义构造方法 print('构造方法被调用!') self.name='未知' #将self对应对象的name属性赋值为“未知” def PrintInfo(self): #定义普通方法PrintInfo print('姓名:%s'%self.name) #输出姓名信息 if __name__=='__main__': stu=Student() #创建Student类对象stu,自动执行构造方法 stu.PrintInfo() #通过stu对象调用PrintInfo方法
构造方法被调用!
姓名:未知
3、带默认参数的构造方法示例
class Student: #定义Student类 def __init__(self,name='未知'): #定义构造方法 print('构造方法被调用!') self.name=name #将self对应对象的name属性赋为形 #参name的值 def PrintInfo(self): #定义普通方法PrintInfo print('姓名:%s'%self.name) #输出姓名信息 if __name__=='__main__': stu1=Student() #创建Student类对象stu1,自动执行构 #造方法 stu2=Student('李晓明') stu1.PrintInfo() #通过stu1对象调用PrintInfo方法 stu2.PrintInfo() #通过stu1对象调用PrintInfo方法
构造方法被调用!
构造方法被调用!
姓名:未知
姓名:李晓明
二、析构方法
1、析构方法是类的另一个内置方法,它的方法名为__del__,在销毁一个类对象时会自动执行,负责完成待销毁对象的资源清理工作,如关闭文件等。
2、类对象销毁有如下三种情况:
(1)局部变量的作用域结束。
(2)使用del删除对象。
(3)程序结束时,程序中的所有对象都将被销毁。
3、析构方法代码示例
class Student: #定义Student类 def __init__(self,name): #定义构造方法 self.name=name #将self对应对象的name属性 #赋值为形参name的值 print('姓名为%s的对象被创建!'%self.name) def __del__(self): #定义析构方法 print('姓名为%s的对象被销毁!'%self.name) def func(name): stu=Student(name) #创建Student类对象stu if __name__=='__main__': stu1=Student('李晓明') #创建Student类对象stu1 stu2=Student('马红') #创建Student类对象stu2 stu3=stu2 del stu2 #使用del删除stu2对象 func('张刚') #调用func函数 del stu3 #使用del删除stu3对象 stu4=Student('刘建') #创建Student类对象stu4
姓名为李晓明的对象被创建!
姓名为马红的对象被创建!
姓名为张刚的对象被创建!
姓名为张刚的对象被销毁!
姓名为马红的对象被销毁!
姓名为刘建的对象被创建!
姓名为李晓明的对象被销毁!
姓名为刘建的对象被销毁!
注意:如果多个变量对应同一片内存空间,则只有这些变量都删除后才会销毁这片内存空间中所保存的对象,也才会自动执行析构方法。
披荆斩棘,仗剑天涯
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通