python构造方法和析构方法

python的构造方法作用:

*构造方法是一种特殊方法(init)以两个下划线开头,两个下划线结尾,用于类的初始化。
*如果类中定义了构造方法,在定义对象时会自动调用构造方法
*构造方法通常用来初始化对象属性

构造方法的实例:

  • 无参的构造方法(在定义方法时参数列表中第一个参数需要加上self,程序默认会把对象本身当做参数传给self)
class Student():        
    def __init__(self):    
        self.name = "张三"    #这一句是用来初始化对象属性的

    def fun(self):
        print(self.name)

stu = Student()
stu.fun()

输出结果为:
张三

如果需要改变self.name里面的值可以像下面这样

class Student():
    def __init__(self):
        self.name = "张三"

    def fun(self):
        print(self.name)

stu = Student()
stu.name = "王五"
stu.fun()

输出结果为:
王五

  • 有参的构造方法
class Student():
    def __init__(self,name,age):
        self.name = name
        self.age = age

    def fun(self):
        print("姓名:",self.name)
        print("年龄:",self.age)

stu = Student('张三',19)
stu.fun()

输出结果为:
姓名: 张三
年龄: 19

在初始化时可以给属性添加默认值如下

class Student():
    def __init__(self,name="张三",age=18):
        self.name = name
        self.age = age

    def fun(self):
        print("姓名:",self.name)
        print("年龄:",self.age)

stu1 = Student()
stu1.fun()
stu2 = Student('李四',19)
stu2.fun()

输出结果为:
姓名: 张三
年龄: 18
姓名: 李四
年龄: 19

python的析构方法作用:

*析构方法的构成和构造方法是一样的(del),作用是在一个对象调用完成后,会将对象释放掉,不在使用

析构方法的实例

class Student():
    def __init__(self,name,age):
        self.name = name
        self.age = age
    def __del__(self):
        print("对象已被清理")  

stu1 = Student('李四',19)
print(stu1.name)
print(stu1.age)
del stu1
print(stu1.name)
print(stu1.age)

输出结果为:
李四
19
对象已被清理 #这里提示有关李四的对象 stu1 已经被清理,再去调用 stu1 就会报错一下就是报错内容
Traceback (most recent call last):
File "E:\Python\stu.py", line 12, in
print(stu1.name)
NameError: name 'stu1' is not defined #报错原因 stu1 对象没有找到

posted @ 2022-05-26 20:28  L_野心家  阅读(360)  评论(0编辑  收藏  举报