Python 内置方法__new__()、__init__() 和 __call__()有什么区别?
  DosddciaWHNX 2023年11月02日 80 0


在 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__() 方法使一个对象可以像函数一样被调用,定义了对象被调用时的行为。
【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月08日 0

暂无评论

推荐阅读
DosddciaWHNX