Python树/字典
我正在做一个项目,想要创建一个Python的dict
子类,然后在后面使用它。我需要在__init__
方法里给self.key
这个属性赋值,但我不太确定最好的做法是什么。
这是我目前的进展。
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
子类的方式怎么做才好。
2 个回答
0
另一种方法是使用现成的树形结构,
你可以在这里找到:https://github.com/caesar0301/pyTree
pyTree 还提供了可视化树形结构的功能:
Harry[harry]
|___ Jane[jane]
| |___ Diane[diane]
| |___ George[george]
| |___ Jill[jill]
| |___ Mary[mary]
| |___ Mark[mark]
|___ Bill[bill]
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
的长度。