在Python中什么时候应该使用namedtuple,什么时候应该避免namedtuple?

2024-10-02 04:26:48 发布

您现在位置:Python中文网/ 问答频道 /正文

在我的在线课堂上,我的一位python导师告诉我,namedtuple弊大于利。在

我不明白为什么。请指定何时使用namedtuple和何时不使用?在


Tags: namedtuple课堂导师弊大于利
2条回答

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.xp.y进行点式访问。在

然而,有很多事情很容易被忽视,而且相当死板。子类也可能发生意外情况。除非namedtuple真正符合您的用例,否则如果您只想要点式名称查找和一个好的repr,那么最好使用SimpleNamespace。在

^{pr2}$

我能看到的问题是

不能为namedtuple指定默认参数值同学们。这个当您的数据可能有许多可选属性时,它们会变得笨拙。在

namedtuple实例的属性值仍然可以使用数值索引和迭代访问,特别是在外部化API中,这可能会导致无意的使用,从而使迁移到真正的类更加困难待会儿。如果你不能控制namedtuple实例的所有用法,最好定义你自己的类

至于何时使用,请参阅IMCoins的评论

相关问题 更多 >

    热门问题