{site_name}

{site_name}

🌜 搜索

Python是一种流行的编程语言,具有简单易学、高效灵活和广泛的应用等优点

Python 𝄐 0
python when reading a line,python when adding binary,python when case,pythonwhen语句,pythonwhen函数
Python是一种流行的编程语言,具有简单易学、高效灵活和广泛的应用等优点。在Python中,__new__()和__init__()都是构造函数,但它们的作用有所不同。

__new__()方法是对象创建时调用的第一个方法,它负责创建并返回实例对象。这个方法通常用于自定义不可变类型的类,例如tuple或frozenset。__new__()方法接受一个参数cls表示当前类,并返回一个新的实例对象。

以下是一个使用__new__()方法创建不可变类的示例:

python
class Immutable:
def __new__(cls, *args, **kwargs):
print("Creating instance...")
instance = super().__new__(cls)
return instance

def __init__(self, arg1, arg2):
self.arg1 = arg1
self.arg2 = arg2

im = Immutable("foo", "bar")


输出结果为:


Creating instance...


可以看到,__new__()方法被调用,并返回一个实例对象。在这里,它仅仅是打印了一个信息,并没有做其他的事情。

__init__()方法是对象创建后调用的第二个方法,它负责初始化实例对象的状态。这个方法通常用于自定义可变类型的类,例如list或dict。__init__()方法不需要返回值,它只负责对实例对象进行初始化操作。

以下是一个使用__init__()方法初始化类的示例:

python
class Mutable:
def __init__(self, arg1, arg2):
print("Initializing instance...")
self.arg1 = arg1
self.arg2 = arg2

mu = Mutable("foo", "bar")


输出结果为:


Initializing instance...


可以看到,__init__()方法被调用,并打印了一个信息。在这里,它将arg1和arg2的值设置为实例对象的属性。

总之,__new__()方法负责创建实例对象,而__init__()方法负责初始化实例对象。如果你需要自定义不可变类型的类,你应该使用__new__()方法;如果你需要自定义可变类型的类,你应该使用__init__()方法。