在Python中,构造函数和析构函数是类的两个特殊方法,它们分别用于初始化对象(构造函数)和在对象生命周期结束时执行清理工作(析构函数)。构造函数通常被称为 __init__
,而析构函数则称为 __del__
。
构造函数 (__init__
)
构造函数在创建类的实例时自动调用,用于设置对象的初始状态,比如给对象的属性赋初始值。
实例 1:简单构造函数
class Person:
def __init__(self, name, age):
self.name = name
self.age = age
创建Person类的实例
person1 = Person("Alice", 30)
print(person1.name) # 输出: Alice
print(person1.age) # 输出: 30
实例 2:构造函数参数默认值
class Student:
def __init__(self, name, grade="A"):
self.name = name
self.grade = grade
student1 = Student("Bob")
print(student1.name, student1.grade) # 输出: Bob A
student2 = Student("Charlie", "B")
print(student2.name, student2.grade) # 输出: Charlie B
析构函数 (__del__
)
析构函数在对象被垃圾回收器回收前自动调用,用于释放资源。需要注意的是,Python的垃圾回收机制是自动的,且 __del__
的调用时机并不总是确定的。
实例 3:使用析构函数打印消息
class FileHandler:
def __init__(self, filename):
self.filename = filename
self.file = open(filename, 'w')
print(f"File {filename} opened.")
def __del__(self):
self.file.close()
print(f"File {self.filename} closed.")
创建并使用FileHandler对象
file_handler = FileHandler("example.txt")
注意:在实际代码中,应确保对象能够被适当清理或使用with语句管理文件,以确保资源正确释放。
在这个例子中,当 FileHandler
对象不再被引用,其对应的文件会被关闭,并打印出一条消息。但请记住,依赖于析构函数来关闭文件或释放其他资源不是最佳实践,因为其调用时机不可控。在处理文件或类似资源时,推荐使用上下文管理器(即with语句)或其他更确定的资源管理方式。