![](/img/trans.png)
[英]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.