簡體   English   中英

Python-用於對類屬性進行操作的繼承的類方法

[英]Python - inherited class method to operate on class attribute

我確定可能有一個簡單的解決方案,但是無論如何問題是這樣的:我有兩個類,例如AB ,它們都具有類似於dataframe的屬性-這些屬性是dataframe類的實例,稱之為C ,它有自己的方法。 我想定義一個“接口”類D ,它具有可以對那些屬性進行操作的方法(即,對作為AB屬性的數據框進行操作)。

為了清楚起見 ,請進行編輯 :在下面的內容中,讓ab為類C數據幀(即實例)。 這樣C的方法可用於ab

更明確地說:假設a是屬性為A的數據Series1 ,其屬性為Series1 ,..., Seriesn 因為a是數據框就好了,我可以叫a.Series1, a.Series2, ...等來訪問的內容Series1Series2中的a 當然, aA的屬性,所以我實際上是在調用AaSeries1AaSeries2等。並且a具有來自類C自己的方法,因此我可以AaSeries1.methodfromclassC()調用AaSeries1.methodfromclassC() 無論如何。 現在假設我想以一致的方式對作為類D的方法實現的a.Seriesjb.Seriesj的內容進行a.SeriesjAB都可以訪問。 我的想法是希望能夠像這樣調用A類的成員: AaSeriesj.transformseries() 我遇到的問題是Seriesj有自己的方法(從類C繼承),而transformseries()不是其中之一。

這似乎有些令人費解,但最終的想法是,我可以將多個調用鏈接到D的各種方法,以更改數據幀屬性的狀態: AaSeries2.transform1().transform2().transformj()BbSeriesj.transform6().transform3()等,這樣AaBb的最終表示形式就是我想要的形式。

您是否考慮過向Seriesn “注入”新方法? 在Python中,您可以像這樣動態地向類添加方法:

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

它甚至可以在之前實例化的對象中工作。 因此,您可以向Pandas的Series和/或Dataframe類添加自定義方法。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM