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

Python类内方法互相调用时self.all()返回None问题排查

问题成因

self.all()执行结果为None是Python方法返回值规则导致的:

  • 你定义的num1、num2、num3三个方法内部只执行了print操作,没有返回任何值
  • all()方法内部仅随机选择方法执行,自身没有写return语句,Python中无显式返回值的方法,默认返回值就是None

现有代码还存在执行顺序错位问题:运行时会先打印选中的One/Two/Three,再打印i choose: None,本质是子方法提前执行了打印,值没有回传给上层调用逻辑。

修正方案

把需要输出的内容通过return向上返回,不在子方法中直接打印,调整后可正常运行:

import random

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

    def get_name(self):
        return self.name

    def num1(self):
        return 'One'

    def num2(self):
        return 'Two'

    def num3(self):
        return 'Three'

    def all(self):
        num = [self.num1, self.num2, self.num3]
        return random.choice(num)()

    def start(self):
        print('my name is: ', self.name)
        print('i choose:', self.all())


my_take = now('king')
my_take.start()

调整点说明:

  • 三个num方法不再直接打印文本,改为将对应文本作为返回值返回
  • all()方法执行随机选中的方法后,将拿到的结果返回给调用方
  • 最终start()调用self.all()时可以拿到实际选中的文本值,不会再打印None,输出顺序也符合预期

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.03 08:01:04