我正在开发一个项目,我想创建一个Python dict
子类,然后再使用它。我需要在self.key
中分配__init__
属性,我不确定这样做的最佳方法。
这是我到目前为止所做的。
Class GoDown(dict):
def __init__(self, *args, **kw):
dict.__init__(self, *args, **kw)
self.key = dict.keys() # I know this is incorrect this is where I am stuck
if __name__ == '__main__':
t = GoDown(d=1)
在上面的示例中,我希望t.key
等于'd'
。我只是不知道用dict
子类做到这一点的最佳方法。
答案 0 :(得分:1)
您可以按如下方式实现:
class GoDown(dict):
"""Dictionary with an additional attribute recording the initial key."""
def __init__(self, **kwargs):
if len(kwargs) != 1:
raise TypeError("Exacly one keyword argument required.")
super(GoDown, self).__init__(**kwargs)
self.key = kwargs.keys()[0]
这可以通过删除*args
并检查kwargs
的长度来阻止用户传递其他位置或关键字参数。
答案 1 :(得分:0)
另一种方法是使用现成的树结构 https://github.com/caesar0301/pyTree
pyTree还提供了可视化树的可能性:
Harry[harry]
|___ Jane[jane]
| |___ Diane[diane]
| |___ George[george]
| |___ Jill[jill]
| |___ Mary[mary]
| |___ Mark[mark]
|___ Bill[bill]