我确信这可能是一个简单的解决方案,但无论如何问题是这样的:我有两个类,比如说A
和B
,这两个类都有类似数据帧的属性 - 这些属性是dataframe类的实例,称之为C
,它有自己的方法。我想定义一个'类似'的类D
,它具有可以对这些属性进行操作的方法(即对A
和B
属性的数据帧进行操作。 / p>
为了清晰起见,
编辑:在下面的内容中,让a
和b
成为来自班级C
的数据帧(即实例)。因此,C
和a
可以使用b
的方法。
更明确地说:假设a
是A
的数据框属性,其属性为Series1
,...,Seriesn
。由于a
是数据帧,我可以打电话
a.Series1, a.Series2, ...
等访问Series1
中Series2
,a
的内容。当然a
是A
的属性,所以我实际上是在调用A.a.Series1
,A.a.Series2
等等,a
有自己的类C
{1}}所以我可以致电A.a.Series1.methodfromclassC()
没问题。无论如何。现在假设我想以一致的方式对a.Seriesj
或b.Seriesj
的内容进行转换,这些内容作为类D
中的方法实现,A
和{ {1}}可以访问。我的想法是,我希望能够像B
那样呼叫班级A
的成员。我遇到的问题是A.a.Seriesj.transformseries()
有自己的方法(继承自类Seriesj
)而C
不是其中之一。
这可能看起来有点令人费解,但最终我可以将多个调用链接到transformseries()
更改数据框属性状态的各种方法:D
或A.a.Series2.transform1().transform2().transformj()
等,B.b.Seriesj.transform6().transform3()
和A.a
的最终表示形式是我想要的。
答案 0 :(得分:1)
您是否考虑过“注入”新方法Seriesn
?在Python中,您可以像这样动态地向类添加方法:
setattr(MyClass, 'new_method', lambda self: 'return value')
它甚至可以在之前实例化的对象中工作。因此,您可以向Pandas的Series
和/或Dataframe
类添加自定义方法。