我正在创建一个模拟键盘敲击的模块。我希望能够选择是否要按或释放一些特殊按钮。其中一些出现不止一次(如左或右Alt),所以我也需要复制它,将它们加在一起,你得到一个层次结构,如:
按钮>左或右>上下
这里棘手的部分是我希望能够单独调用每一层(没有dicts)。
我的目标最终结果应该是选择以下示例的选项:
>>>print alt()
'Alt'
>>>print alt.left()
'Alt Left'
>>>print alt.left.up()
'Alt Left Up'
我认为有一个简单的解决方案,但我无法弄清楚。有什么想法吗?
答案 0 :(得分:1)
不完全确定您要做的是什么,但是为了获得您在问题中描述的行为,您可以尝试这样的事情:
class Cmd:
def __init__(self, key, parent=None):
self.key = key
self.parent = parent
def __call__(self, *args, **kwargs):
return "%s %s" % (self.parent(), self.key) if self.parent else self.key
演示:
alt = Cmd("Alt")
alt.left = Cmd("Left", alt)
alt.left.up = Cmd("Up", alt.left)
print alt()
print alt.left()
print alt.left.up()
答案 1 :(得分:0)
您需要存储每个节点'作为具有引用其他节点对象的属性的对象。