raorr 发表于 2020-7-25 09:40:45

我再问一个稍微有点弱智的问题

class Test:
      def __init__(self, x, y):
                return x + y

编程中需要主要到 __init__ 方法的返回值一定是None,不能是其它!

这个__init__返回值一定是none是什么意思啊,没太搞懂{:10_266:}

天边一抹灬红 发表于 2020-7-25 09:43:06

None就是没有任何返回值的意思,就不能返回任何值

Twilight6 发表于 2020-7-25 09:43:41

本帖最后由 Twilight6 于 2020-7-25 09:45 编辑



None 就是空的意思,而 __init__ 魔法方法是只能默认返回 None ,返回其他的对象一定会报错的

一个函数你没设置返回值,默认返回的都是 None ,所以说 Python 任何对象都有返回值

因为当你没有设置返回值时候,Python 默认返回的就是一个 空对象,也就是 None

你设置函数 return None ,和不设置 return 的结果是等价的

所以说 __init__ 魔法方法,可以设置 return ,但是 return 的对象必须是None ,否则就会报错

zltzlt 发表于 2020-7-25 10:21:27

__init__ 对象不能有返回值,即使有也只能 return None 。

v.ki 发表于 2020-7-25 10:36:51

Twilight6 发表于 2020-7-25 09:43
None 就是空的意思,而 __init__ 魔法方法是只能默认返回 None ,返回其他的对象一定会报错的

一个 ...

正解

陈尚涵 发表于 2020-7-25 12:59:47

__init__对象不能有返回值,否则就会报错。

nahongyan1997 发表于 2020-7-25 17:48:54

我觉得他们的回答都没有理解你的意思,你的意思是为什么 __init__ 函数为什么只能返回 None 而不能返回其他值,

你可以想象一下如果 __init__ 返回了其他值那么在执行这条语句时会发生什么:

a = Test()

这条语句的意思是创建一个 Test 类的实例并赋值给 a ,

那么如果 __init__ 返回了其他值呢,要知道它是在执行 a = Test() 这条语句时就已经被执行的,那么 Python 就会纠结在是把 Test 的实例赋值给 a 呢?还是 把 __init__ 函数的返回值赋值给 a 呢?

所以 Python 的设计师为了不让这种事情发生,干脆限制 __init__ 函数只能返回 None ,这样在执行 a = Test() 这条语句时就直接实例化 Test 类并赋值给 a ,所以 __init__ 的返回值只能是 None。

码字不易,如果您对我的答案感到满意,请设置最佳答案!
页: [1]
查看完整版本: 我再问一个稍微有点弱智的问题