Объект cmd.Cmd не возвращает никакого значения
В настоящее время я создаю командную игру с использованием Python cmd
модуль.
В определенный момент мой cmd.Cmd
объекты становятся вложенными. Если я говорю, что я запускаю командную строку A
в определенный момент новая подсказка B
создается внутри A
, Я хочу, когда мой 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
объект возвращает любое значение. Как можно это сделать, или это невозможно по какой-то причине, которую я не знаю?
1 ответ
Вы можете переопределить cmdloop()
в вашем подклассе, чтобы вернуть определенное значение, после вызова версии суперкласса cmdloop()
:
class Test(cmd.Cmd):
# ...
def cmdloop(self):
cmd.Cmd.cmdloop(self)
return self.value