Python 类的构造方法能返回值么 ?

Python 类的构造方法能返回值么 ?

__int__ 可以返回值么? 变量= 类() 这样写行么?


回答:

在 Python 中,类的构造方法(通常被称为 init 方法)不能直接返回值。构造方法的主要目的是在对象创建时初始化对象的属性,而不是返回值。

构造方法在创建对象时自动调用,用于初始化对象的属性。它没有显式的返回值。当使用类创建对象时,Python 会在内存中为对象分配空间,并调用构造方法来初始化对象的属性。然后,Python 返回这个新创建的对象的引用,以便在后续的代码中可以使用它。

虽然构造方法不能直接返回值,但可以通过设置对象的属性来间接实现类似的效果。例如,可以在构造方法中设置对象的属性,然后在后续的代码中通过访问这些属性来获取相应的值。

python">class Person:

def __init__(self, name, age):

self.name = name

self.age = age

person1 = Person("Alice", 25) # 创建一个 Person 对象

print(person1.name) # 输出对象的 name 属性

print(person1.age) # 输出对象的 age 属性


回答:

为什么会有这样的需求,有什么原因让你必须在构造方法里返回值呢?

构造方法只是用来创建类的新实例时被调用的,如果允许你返回了一个值 哪你在类实例化过程中到底变成了什么呢?
比如你有一个 myClass类

cls = myClass() //实例化该类,如果这个时候构造方法返回了一个值,哪cls 到底应该是什么呢??

所以无论哪种语言,都不可能在构造方法中返回一个值,应该它其实就是返回了类的实例


回答:

不能够,__init__ 不能有非-None类型的返回值,否则类如何实例化。

你应该看看官网的定义和解释:

object.__init__(self[, ...])

Called after the instance has been created (by __new__()), but before it is returned to the caller. The arguments are those passed to the class constructor expression. If a base class has an __init__() method, the derived class’s __init__() method, if any, must explicitly call it to ensure proper initialization of the base class part of the instance; for example: super().__init__([args...]).

Because __new__() and __init__() work together in constructing objects (__new__() to create it, and __init__() to customize it), no non-None value may be returned by __init__(); doing so will cause a TypeError to be raised at runtime.

以上是 Python 类的构造方法能返回值么 ? 的全部内容, 来源链接: utcz.com/p/938837.html

回到顶部