gpt4 book ai didi

python - cmd.Cmd 对象不返回任何值

转载 作者:太空宇宙 更新时间:2023-11-03 18:20:37 26 4
gpt4 key购买 nike

我目前正在使用 Python 的 cmd 模块创建一个基于命令的游戏。

在某个时刻,我的 cmd.Cmd 对象会被嵌套。如果我说我正在运行命令提示符 A,那么在某个时刻,会在 A 内创建一个新的提示符 B。我想,当我的 B 完成时,再次向 A 返回某个值。我所有的试验都以内部命令提示符返回 None 结束。为了更好地理解这种情况,我尝试简化问题,只是尝试从 cmd.Cmd 对象获取返回值。这就是我所拥有的:

import cmd
class Test(cmd.Cmd):
def __init__(self, value):
cmd.Cmd.__init__(self)
self.value = value
def do_bye(self, s):
return True
def postloop(self):
print("Entered the postloop!")
return self.value

然后在我已经尝试过的外壳上:

a = Test("bla bla")
print(a.cmdloop())
# after the "bye" command it prints None

print(Test("bla bla").cmdloop())
# after the "bye" command it ALSO prints None

a = Test("safsfa").cmdloop()
print(a)
# Also prints None

我似乎无法使cmd.Cmd对象返回任何值。如何才能做到这一点,或者由于某种我不知道的原因而不可能做到这一点?

最佳答案

在调用父类(super class)的 cmdloop() 版本后,您可以在子类中重新定义 cmdloop() 以返回特定值:

class Test(cmd.Cmd):
# ...
def cmdloop(self):
cmd.Cmd.cmdloop(self)
return self.value

关于python - cmd.Cmd 对象不返回任何值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24225082/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com