【发布时间】:2020-12-20 17:48:33
【问题描述】:
pandas 文档recommends against 对其数据结构进行了子类化。他们推荐的替代方法之一是使用组合,但他们只是将读者指向一篇关于组合与继承的 Wikipedia 文章。那篇文章和我发现的其他资源并没有帮助我理解如何使用组合扩展 pandas DataFrame。有人可以在这种情况下解释组合并告诉我组合可能是子类pd.DataFrame 的首选替代方案吗?一个简单的例子或一个比维基百科文章更有启发性的信息链接会很有帮助。
在这个问题中,我特别询问在有人可能想继承pd.DataFrame 的情况下应该如何使用组合。我知道还有其他解决方案可以扩展不涉及组合的 Python 对象,我询问了 another question 关于扩展 pandas DataFrames 的问题,这导致了使用包装类的不同解决方案。
我不明白“包装”和“组合”在这里指的是相同的方法,如下面 MaxYarmolinsky 的回答中所述。我在上面链接到的问题的answer 对在这种情况下使用组合进行了更完整的讨论,这可能需要正确处理__getattr__、__getitem__ 和__setitem__(我意识到这对知道的人来说是显而易见的他们在做什么,但我不得不问我之前的问题,因为我自己尝试时未能获取/设置项目)。
【问题讨论】:
标签: python python-3.x pandas class subclassing