在 Python 中,__new__()
、__init__()
和 __call__()
是类的内置方法,用于不同的目的。
1、__new__() 方法
__new__()
方法是在创建一个新实例对象之前被调用的特殊方法。负责创建并返回类的实例对象,通常用于自定义类的实例化过程。__new__()
方法是一个类方法,接收类作为第一个参数(通常命名为 cls
),并返回一个新的实例对象。__new__()
方法在对象创建之前执行,用于控制实例化的过程,可以在创建实例之前对实例进行修改或验证。
class MyClass:
def __new__(cls, *args, **kwargs):
instance = super().__new__(cls)
# 自定义实例化过程
# ...
return instance
def __init__(self, *args, **kwargs):
# 初始化实例
# ...
pass
2、__init__方法
__init__()方法是在实例对象创建之后被调用的特殊方法。负责对实例对象进行初始化,通常用于设置实例的属性或执行其他必要的初始化操作。__init__()方法是一个实例方法,接收实例对象作为第一个参数(通常命名为 self),不返回任何值。
class MyClass:
def __init__(self, name):
self.name = name
# 其他初始化操作
obj = MyClass("Alice") # 创建实例对象并调用 __init__() 方法进行初始化
print(obj.name) # 输出 "Alice"
3、__call__()
方法
__call__() 方法使一个对象可以像函数一样被调用。当实例对象被调用时,__call__()方法被调用,可以在其中定义对象的行为。__call__() 方法可以接收任意参数,并返回相应的结果。
class MyCallable:
def __call__(self, *args, **kwargs):
# 在对象被调用时执行的逻辑
# ...
return result
my_obj = MyCallable()
result = my_obj(arg1, arg2) # 调用对象,实际上调用了 __call__() 方法
4、总结
-
__new__()
方法负责创建并返回类的实例对象,可以在实例化之前对实例进行修改或验证。 -
__init__()
方法负责对实例对象进行初始化,设置实例的属性或执行其他必要的初始化操作。 -
__call__()
方法使一个对象可以像函数一样被调用,定义了对象被调用时的行为。