Python:__init__不是构造函数:深入探究Python对象创建

Python:__init__不是构造函数:深入探究Python的对象创建过程

调整Python的构造函数以创建快速、内存高效的类

Python如何构建对象(图片来自ChatGPT)

您知道__init__方法不是构造函数吗?但是,如果__init__不创建对象,那么是什么创建了对象呢?Python是如何创建对象的?Python是否有构造函数?

本文的目标是更好地理解Python如何创建对象,以便我们可以为实际应用进行操控

首先,我们将深入探讨Python创建对象的内部机制。接下来,我们将运用这些知识,并通过一些实际示例讨论一些有趣的用例。让我们开始编码吧!

1. 理论:在Python中创建对象

在本部分中,我们将找出在您创建对象时,Python在背后做了什么。在下一部分中,我们将运用这些新知识并进行应用。

如何在Python中创建对象?

这应该很简单;您只需创建一个类的实例。或者,您可以创建一个新的内置类型,如strint。在下面的代码中,我们创建了一个基本类的实例,它只包含一个__init__函数和一个say_hello方法:

class SimpleObject:  greet_name:str  def __init__(self, name:str):    self.greet_name = name  def say_hello(self) -> None:    print(f"Hello {self.greet_name}!")my_instance = SimpleObject(name="bob")my_instance.say_hello()

请注意__init__方法。它接收一个name参数,并将其值存储在SimpleObject实例的greet_name属性上。这使得我们的实例保持了状态。

现在问题来了:为了保存状态,我们需要有能保存状态的东西。那么,__init__是从哪里获得这个对象的呢?

那么,__init__是构造函数吗?

答案是:从技术上讲,不是。构造函数实际上是创建新对象的;__init__方法仅负责设置对象的状态。它只是接收参数值,并将它们分配给类的属性,如greet_name