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

Python类__init__中调用方法设置属性为何返回None?

问题原因及解决方法

为什么输出是None?

你的代码逻辑存在覆盖问题:

  • 创建AnyClass实例时,__init__方法执行self.characteristic = self.set_characteristic(),这一步是把set_characteristic方法的返回值赋值给self.characteristic。
  • set_characteristic方法内部虽然给self.characteristic赋值为5,但这个方法没有显式的return语句,Python中所有未写return的函数/方法,默认返回None。
  • 流程是:先在set_characteristic里把self.characteristic设为5,紧接着__init__又将其覆盖成方法返回的None,最终输出自然是None。

两种解决方式

方式一:让方法返回计算结果

这种方式更贴合“方法完成计算后返回结果供调用者赋值”的逻辑,适合你提到的方法内包含大量计算的场景:

class AnyClass:
    def __init__(self):
        self.characteristic = self.set_characteristic()

    def set_characteristic(self):
        # 此处写入实际的大量计算逻辑
        result = 5  # 模拟计算得到的结果
        return result

obj = AnyClass()
print(obj.characteristic)  # 输出5

方式二:直接调用方法,不接收返回值

如果方法内部已经负责给实例属性赋值,__init__里只需调用方法即可:

class AnyClass:
    def __init__(self):
        self.set_characteristic()

    def set_characteristic(self):
        # 此处写入实际的大量计算逻辑
        self.characteristic = 5

obj = AnyClass()
print(obj.characteristic)  # 输出5

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 20:49:57