在 Python 中,__new__()
、__init__()
和 __call__()
是类的内置方法,用于不同的目的。
1、__new__()
方法
__new__()
方法是在创建一个新实例对象之前被调用的特殊方法。负责创建并返回类的实例对象,通常用于自定义类的实例化过程。__new__()
方法是一个类方法,接收类作为第一个参数(通常命名为 cls
),并返回一个新的实例对象。__new__()
方法在对象创建之前执行,用于控制实例化的过程,可以在创建实例之前对实例进行修改或验证。
class MyClass:def __new__(cls, *args, **kwargs):instance = super().__new__(cls)# 自定义实例化过程# ...return instancedef __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 resultmy_obj = MyCallable()
result = my_obj(arg1, arg2) # 调用对象,实际上调用了 __call__() 方法
4、总结
__new__()
方法负责创建并返回类的实例对象,可以在实例化之前对实例进行修改或验证。__init__()
方法负责对实例对象进行初始化,设置实例的属性或执行其他必要的初始化操作。__call__()
方法使一个对象可以像函数一样被调用,定义了对象被调用时的行为。