You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python类的另类构造方法中为什么需要包含return语句?

问题解答

核心原因

from_string 作为类方法,需要把内部生成的类实例返回给调用方,否则外部无法拿到你创建的 Student 对象。

你的认知偏差点

你混淆了实例化表达式的返回特性和函数/方法的返回规则:

  • 你写 Student("Cool", "Person") 时,这个实例化表达式本身的求值结果就是新生成的 Student 实例,所以你可以直接把这个表达式的结果赋值给 Student_1。
  • 但你在 from_string 方法内部写 cls(first, last) 时,这个实例化操作确实会生成新实例,也会调用 __init__ 完成初始化,可这个新实例只存在于方法的内部作用域,如果没有 return 语句把它作为方法的返回值抛出,from_string 方法会默认返回 None,外部调用 Student.from_string(Student_2) 时拿到的就是 None,根本没法得到你想要的实例对象。

验证示例

你可以把代码里的 return 去掉运行试试,结果会符合以下预期:

# 去掉return的错误版本
class Student:
    def __init__(self, first, last):
        self.first = first
        self.last = last

    @classmethod    
    def from_string(cls, emp_str):
        first, last = emp_str.split("-")
        cls(first, last) # 无return语句

Student_2 = Student.from_string("Another-One")
print(Student_2) # 输出None,尝试访问Student_2.first会直接抛出属性错误

内容的提问来源于stack exchange,提问作者Lambda

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 20:15:03