0

我确信可能有一个简单的解决方案,但无论如何问题是这样的:我有两个类,比如说A和,它们都有类似于数据框的属性——这些属性是数据框类的实例,B称之为C有自己的方法。我想定义一个“类似接口”的类D,它具有可以对这些属性进行操作的方法(即对作为A和的属性的数据帧进行操作B)。

为清楚起见进行编辑:在下面的内容中,让ab成为来自 class 的数据框(即实例)C。这样 的 方法C可用于ab

更明确地说:假设a数据框类似于 的属性A,具有属性Series1,...,Seriesn。由于a类似于数据框,我可以调用 a.Series1, a.Series2, ...etc 来访问Series1, Series2in的内容a。当然a是一个属性,A所以我实际上是在调用A.a.Series1, A.a.Series2.. 等,并且a有自己的类方法,C所以我可以调用A.a.Series1.methodfromclassC()没有问题。无论如何。现在假设我想以一致的方式对a.Seriesj, or的内容进行转换b.Seriesj,实现为 class 中的方法D,并且两者都A可以B访问。我希望能够A像这样调用班级成员的想法:A.a.Seriesj.transformseries(). 我遇到的问题是它Seriesj有自己的方法(继承自 class C)并且transformseries()不是其中之一。

这可能看起来有点令人费解,但我的想法是最终我可以将多个调用链接到D更改数据帧属性状态的各种方法:A.a.Series2.transform1().transform2().transformj()等等B.b.Seriesj.transform6().transform3() ,以便最终表示A.aandB.b是我想要的形式。

4

1 回答 1

1

您是否考虑过为您的“注入”新方法Seriesn?在 Python 中,您可以像这样动态地将方法添加到类中:

setattr(MyClass, 'new_method', lambda self: 'return value')

它甚至可以在之前实例化的对象中工作。因此,您可以向 PandasSeries和/或Dataframe类添加自定义方法。

于 2013-04-23T21:17:52.203 回答