lc88824 发表于 2024-9-28 15:05:22

init方法

init方法为什么没有返回值?它和new方法是如何配合控制的

FishC 发表于 2024-9-28 15:11:35

`__init__` 方法没有返回值是因为它的主要作用是初始化对象的属性。它是在对象创建之后调用的,而不是用于创建对象本身。

对象的创建实际上是由 `__new__` 方法完成的,`__new__` 方法负责返回类的一个实例。创建实例之后,Python自动调用 `__init__` 方法来初始化实例的属性。

class MyClass:
    def __new__(cls, *args, **kwargs):
      instance = super().__new__(cls)
      return instance

    def __init__(self, name):
      self.name = name

# 创建 MyClass 的实例
obj = MyClass("FishC")
print(obj.name)# 输出 FishC

总结:
- `__new__` 用于创建实例。
- `__init__` 用于初始化实例的属性。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。

很cool的阳 发表于 2024-9-28 16:23:34

在编程语言中,`init` 方法通常指的是初始化方法,它用于在对象创建时设置对象的初始状态。`init` 方法没有返回值是因为它的主要目的是初始化对象的状态,而不是返回一个值。

### `init` 方法的作用
1. **设置初始状态**:`init` 方法通常在对象创建时被调用,用于设置对象的初始状态,比如初始化变量值。
2. **执行初始化代码**:在对象创建过程中执行必要的初始化代码,确保对象在使用前处于正确的状态。

### `new` 方法的作用
`new` 是一个操作符,用于创建对象的实例。在调用 `new` 时,通常会发生以下步骤:
1. **分配内存**:为新对象分配内存空间。
2. **调用构造函数**:执行构造函数(如 `init` 方法),进行对象的初始化。
3. **返回对象引用**:构造函数执行完毕后,`new` 操作符返回新创建的对象的引用。

### `init` 方法和 `new` 方法的配合
在很多面向对象的编程语言中,如 Java、C++、Python 等,`new` 操作符和构造函数(类似于 `init` 方法)是这样配合工作的:
1. **用户调用 `new`**:用户通过 `new` 操作符创建对象。
2. **分配内存**:语言的运行时环境为新对象分配内存。
3. **调用构造函数**:运行时环境调用对象的构造函数(如 `init` 方法),执行初始化代码。
4. **返回对象引用**:构造函数执行完毕后,`new` 操作符返回新创建的对象的引用给用户。

### 示例
以 Python 为例,这是一个简单的类和构造函数的示例:

```python
class MyClass:
    def __init__(self, value):
      self.value = value

# 创建对象
obj = MyClass(10)

print(obj.value)# 输出: 10
```

在这个例子中:
- `MyClass` 是一个类。
- `__init__` 是构造函数,类似于 `init` 方法,用于初始化对象。
- `obj = MyClass(10)` 这行代码通过 `new` 操作符创建了一个 `MyClass` 的实例,并调用了构造函数 `__init__`,传递了参数 `10`。
- 构造函数 `__init__` 设置了对象的初始状态,将 `value` 属性设置为 `10`。
- `new` 操作符返回了新创建的对象的引用,存储在变量 `obj` 中。

希望这能帮助你理解 `init` 方法和 `new` 方法是如何配合工作的。如果你有更具体的问题或需要其他编程语言的例子,请告诉我!

zhangchenyvn 发表于 2024-9-28 17:57:55

new:你要造房子/汽车/……
init:你要造什么样的 房子/汽车/……(取决于new)

某一个“天” 发表于 2024-9-29 17:38:09

new返回给init
页: [1]
查看完整版本: init方法