Python创建系列文本菜单 - 类/对象或装饰器功能?

时间:2013-06-16 03:23:17

标签: python object menu decorator

我在Python中创建了一系列文本菜单。我在Python约定中被告知我应该只为需要维护和操作的数据成员创建类/对象。要做到这一点,我不确定.....下面是否合适,或者是否会创建一个基本功能,然后根据哪个菜单更好地进行装饰?

class Menu(object):
   def __init__(self):
      # Ideally, self._options would be an empty dict for the base class.
      # This is just for the sake of example.
      self._options = {'a': self.optionA,
                       'b': self.optionB}

   def handle_options(self, option):
      if option not in self._options:
         print "Invalid option"
         # re-draw
         return

      self._options[option]()

   def optionA(self):
      print "option A"

   def optionB(self):
      print "option B"


class SubMenu(Menu):
   def __init__(self):
      Menu.__init__(self)

      self._options = {'c': self.optionC,
                       'd': self.optionD}

   def optionC(self):
      # ...

   def optionD(self):
      # .

...

1 个答案:

答案 0 :(得分:0)

执行此操作的方法是拥有一个仅提供行为Menu基类 - 例如展示自己,下拉菜单,将附加菜单弹出到右侧,隐藏本身等等。

然后让子类包含每个菜单实例的实际数据。