erança de objeto e cmd aninha

Esta é provavelmente uma pergunta básica do OO: estou tentando criar um menu de console aninhado com o cmd que correu bem. Também quero que todos os meus subconsoles tenham acesso aos mesmos objetos. Isso não correu bem.

Meu exemplo simples:

import cmd
class MainConsole(cmd.Cmd):
    def __init__(self,obj1,obj2):
        cmd.Cmd.__init__(self)
        self.prompt = ">"
        self.obj1 = obj1 # The objects I want access to in all my consoles.
        self.obj2 = obj2
        self.menu1 = SubConsole1() # I could pass in the objects here as arguments
        self.menu2 = SubConsole2() # but there should be a better way.

    def do_menu1(self,args):
        self.menu1.cmdloop()
    def do_menu2(self,args):
        self.menu2.cmdloop()
    def do_info(self,args):
        self.menu1.do_info(args)
        self.menu2.do_info(args)
    def do_exit(self,args):
        return -1

class SubConsole1(cmd.Cmd,MainConsole):
    def __init__(self):
        cmd.Cmd.__init__(self)
        self.prompt = "1>"
    def do_action(self,args):
        print self.obj1.someattr1 # Doesn't work

class SubConsole2(cmd.Cmd,MainConsole):
    def __init__(self):
        cmd.Cmd.__init__(self)
        self.prompt = "2>"
    def do_action(self,args):
        print obj1.someattr2 # Doesn't work


class anobject(object):
    def __init__(self,init_value):
        self.someattr1 = init_value
        self.someattr2 = init_value * 2

object1 = anobject(1)
object2 = anobject(2)
c=MainConsole(object1,object2)
c.cmdloop()

Quando eu corro isso, recebo

>
>menu1
1>info
AttributeError: SubConsole1 instance has no attribute 'obj1'

Tente novamente

>
>menu2
2>info
NameError: global name 'obj1' is not defined

Não tenho certeza se os SubConsoles devem ser subclasses deMainConsole. Eu também tentei aninhar os SubConsoles dentro deMainConsole.

questionAnswers(3)

yourAnswerToTheQuestion