[英]Python - Method to operate on a class attribute, where the attribute is dynamically specified in a class method
[英]Python - inherited class method to operate on class attribute
我确定可能有一个简单的解决方案,但是无论如何问题是这样的:我有两个类,例如A
和B
,它们都具有类似于dataframe的属性-这些属性是dataframe类的实例,称之为C
,它有自己的方法。 我想定义一个“接口”类D
,它具有可以对那些属性进行操作的方法(即,对作为A
和B
属性的数据框进行操作)。
为了清楚起见 ,请进行编辑 :在下面的内容中,让a
和b
为类C
数据帧(即实例)。 这样C
的方法可用于a
和b
。
更明确地说:假设a
是属性为A
的数据Series1
,其属性为Series1
,..., Seriesn
。 因为a
是数据框就好了,我可以叫a.Series1, a.Series2, ...
等来访问的内容Series1
, Series2
中的a
。 当然, a
是A
的属性,所以我实际上是在调用AaSeries1
, AaSeries2
等。并且a
具有来自类C
自己的方法,因此我可以AaSeries1.methodfromclassC()
调用AaSeries1.methodfromclassC()
。 无论如何。 现在假设我想以一致的方式对作为类D
的方法实现的a.Seriesj
或b.Seriesj
的内容进行a.Seriesj
, A
和B
都可以访问。 我的想法是希望能够像这样调用A
类的成员: AaSeriesj.transformseries()
。 我遇到的问题是Seriesj
有自己的方法(从类C
继承),而transformseries()
不是其中之一。
这似乎有些令人费解,但最终的想法是,我可以将多个调用链接到D
的各种方法,以更改数据帧属性的状态: AaSeries2.transform1().transform2().transformj()
或BbSeriesj.transform6().transform3()
等,这样Aa
和Bb
的最终表示形式就是我想要的形式。
您是否考虑过向Seriesn
“注入”新方法? 在Python中,您可以像这样动态地向类添加方法:
setattr(MyClass, 'new_method', lambda self: 'return value')
它甚至可以在之前实例化的对象中工作。 因此,您可以向Pandas的Series
和/或Dataframe
类添加自定义方法。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.