|
|
发表于 2024-9-29 23:08:01
|
显示全部楼层
我们来分别解析这两段代码。
#### 代码1:
- class Person(object):
-
- def __new__(cls):
- print("__new__ called")
- return super().__new__(cls)
-
- def __init__(self):
- print("__init__ called")
-
- a = Person()
复制代码
- `__new__` 方法先被调用,打印 `__new__ called`。
- `__new__` 返回一个新创建的实例。
- 接着,`__init__` 方法被调用,打印 `__init__ called`。
因此,输出结果是:
- __new__ called
- __init__ called
复制代码
#### 代码2:
- class Person(object):
-
- def __new__(cls):
- print("__new__ called")
-
- def __init__(self):
- print("__init__ called")
-
- a = Person()
复制代码
- `__new__` 方法先被调用,打印 `__new__ called`。
- 但是 `__new__` 方法没有返回实例,返回值默认是 `None`。
- 由于没有实例被创建,所以 `__init__` 方法不会被调用。
因此,输出结果是:
希望这样解释能帮助你理解其中的区别。
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。 |
|