在我的在线课程中,我的一位python导师告诉我namedtuple
可能造成的伤害大于好处。
我很困惑。有人可以指定何时使用namedtuple
以及何时不使用?
答案 0 :(得分:0)
我能看到的问题很少
您无法为namedtuple类指定默认参数值。当您的数据可能包含许多可选属性时,这会使它们变得难以处理。
仍然可以使用数字索引和迭代来访问namedtuple实例的属性值。特别是在外部化的API中,这可能导致无意的使用,这使得以后更难移动到实际类。如果你不能控制对于namedtuple实例的所有用法,它的'更好地定义自己的类
以及何时使用它请看IMCoins的评论
答案 1 :(得分:0)
namedtuple的经典例子是这样的......
>>> Point = namedtuple('Point', ['x', 'y'])
>>> p = Point(x=1, y=2)
>>> p.x
1
p.y
2
我认为大多数人一开始觉得有吸引力的是能够轻松地创建课程并且能够使用关键字args Point(x=1, y=2)
进行实例化并且能够像p.x
和{{1}那样进行虚拟访问}。
然而,有很多事情容易被忽视,而且相当不灵活。子类也会发生意外的事情。除非namedtuple确实击中了你的用例,否则如果你只想要点名查找和一个好的repr,你最好不要使用p.y
。
SimpleNamespace