【发布时间】:2018-02-07 23:39:25
【问题描述】:
所以我基本上提出这个问题是为了一些建议
我有几个类,它们基本上会执行一些 pandas 操作并返回一个数据框。但是这些数据框需要在某些过滤器选项上加减。我计划编写一个类来覆盖 __add__ 和 __sub__ 方法,以便实现这些过滤器的代码添加或减去这些数据帧。下面是一个基本结构
import ArithOperation
class A:
def dataA(self, filenameA):
dfa = pd.read_excel(filenameA)
return ArithOperation(dfA)
class B:
def dataB(self, filenameB):
dfb = pd.read_excel(filenameB)
return ArithOperation(dfB)
dfA 和 dfB 这里是 pandas 数据帧。
class ArithOperation:
def __init__(self, df):
self.df = df
def __add__(self, other):
# here the filtering and manual addition is done
return ArithOperation(sumdf)
def __sub__(self, other):
# here the filtering and manual subtraction is done
return ArithOperation(deltadf)
基本上我做如下计算
dfa = A().dataA()
dfb = B().dataB()
sumdf = dfa+dfb
deltadf = dfa-dfb
但是如何使 sumdf 和 deltadf 也具有默认数据框功能。我知道我应该将数据框类继承到 ArithOperation 但我对在许多地方实例化 ArithOperation() 感到困惑和不舒服。
- 是否有更好的设计模式来解决这个问题?
- 要在 ArithOperation 上继承哪个类,以便我在 ArithOperation 对象上也拥有所有 pandas 数据框函数?
【问题讨论】:
标签: python inheritance design-patterns