欢迎访问宙启技术站
智能推送

Python中new()方法的应用实例

发布时间:2024-01-06 08:22:00

__new__() 方法是一个创建对象的静态方法,它返回一个实例化的对象。它是在实例化一个类时被调用的第一个方法,然后才调用 __init__() 方法。

下面是一个 __new__() 方法的使用示例:

class Singleton:

    instance = None

    def __new__(cls, *args, **kwargs):
        if not cls.instance:
            cls.instance = super().__new__(cls, *args, **kwargs)
        return cls.instance


# 创建实例
s1 = Singleton()
s2 = Singleton()
print(s1)
print(s2)
print(s1 is s2)

在这个示例中,我们定义了一个称为 Singleton 的类。它是一个单例模式的实现,确保只有一个实例存在。

__new__() 方法中,我们首先检查类属性 instance 是否为 None。如果是,就调用父类的 __new__() 方法创建一个新的实例,并将其赋值给 instance 属性。否则,直接返回 instance 属性。

我们创建了两个对象 s1s2,并输出它们的内存地址。由于 Singleton 类只能实例化一个对象,所以 s1s2 的内存地址是一样的,这说明它们是同一个对象。

这是 __new__() 方法的典型使用示例。它可以用于创建单例模式、自定义元类等高级用途。