随笔 - 86  文章 - 5  评论 - 11  阅读 - 10万 

一、构造方法

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   
复制代码
姓名为李晓明的对象被创建!
姓名为马红的对象被创建!
姓名为张刚的对象被创建!
姓名为张刚的对象被销毁!
姓名为马红的对象被销毁!
姓名为刘建的对象被创建!
姓名为李晓明的对象被销毁!
姓名为刘建的对象被销毁!
 
注意:如果多个变量对应同一片内存空间,则只有这些变量都删除后才会销毁这片内存空间中所保存的对象,也才会自动执行析构方法。
posted on   史振兴  阅读(1858)  评论(0编辑  收藏  举报
编辑推荐:
· 基于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最大的设计失误
· 单元测试从入门到精通
点击右上角即可分享
微信分享提示