python各种方法总结
魔术方法
重点
- _init_
- init 方法 init 方法是一个类的构造器,当一个实例被创建时,这个方法会被自动调用。它用于对新创建的对象进行初始化操作,
- 比如设置初始值。init 方法是类的初始化方法,它总是接收 self 作为第一个参数,后面可以接收其他参数。 • 如果你需要继承父类的 init 方法,
- 记得调用 super().init()。
class MyClass:
def __init__(self, value):
self.value = value
obj = MyClass(10)
print(obj.value)
- _new_
- new_ 方法 new 方法是类的静态方法,用于创建一个实例(开辟一个空间,或者说定义一个对象)。它负责返回类的新实例,通常用于控制对象的创建。
- new 必须返回一个实例,否则会抛出 TypeError。
- new 方法在 init 之前被调用。 • 它是一个静态方法,不需要接收 self,而是接收 cls 作为第一个参数,代表类本身。
- • 通常用于控制对象的创建,比如单例模式。
class MyClass:
def __new__(cls, *args, **kwargs):
instance = super().__new__(cls)
return instance
obj = MyClass()
- del
- del 方法 del 方法是类的析构器,当一个实例被销毁时,这个方法会被自动调用。
- 它用于执行清理操作,比如关闭文件、释放资源等。
- del 方法的调用时机不确定,因为Python的垃圾回收机制可能不会立即执行它。 • 依赖 del 来释放资源是不安全的,
- 应该在 init 中分配的资源,在 del 中释放
class MyClass:
def __init__(self, value):
self.value = value
def __del__(self):
print(f"对象 {
self.value} 被销毁")
obj = MyClass(10)
del obj
- call
- call 方法 call 方法使得一个类的实例表现得像一个函数,
- 即实例可以被调用。当实例被调用时,这个方法会被自动调用。
- call 方法必须被定义在实例的方法中,而不是类方法或静态方法。 • 它通常用于创建可调用的对象,比如装饰器、工厂模式等。
- 这些魔术方法在Python中非常有用,但也需要谨慎使用,因为它们的工作方式可能不如普通方法直观。
class MyClass:
def __init__(self, value):
self.value = value
def __call__(self)