【发布时间】:2017-04-09 14:19:29
【问题描述】:
我有一个存储数据帧 (df) 并包含允许过滤所述 df 的方法的类:
class File(object):
def __init__(self, f):
self.f = f
def view_ref(self):
return self.f['REF']
def filter_ref(self, val):
''' Filter REF column for the given val
'''
f = self.f[self.f['REF'] == val]
self.f = f
return self.f
这种方法的问题是我希望能够在使用 filter_ref() 方法执行过滤后访问原始的预过滤 df 和过滤后的 df。但是,这不能用上面的代码来完成。我将类更改如下,以便可以随时访问原始 df:
class File(object):
def __init__(self, f):
self.f = f
self.filtered = None
def view_ref(self):
return self.f['REF']
def filter_ref(self, val):
''' Filter REF column for the given val
'''
filtered = self.f[self.f['REF'] == val]
self.filtered = filtered
return self.filtered
上述方法的问题是我最终会有各种过滤和选择数据的方法,我希望将它们分开。所以我尝试为每个目的创建两个不同的类:
class File(object):
def __init__(self, f):
self.f = f
self.filter = FilterFile(f)
def view_ref(self):
return self.f['REF']
class FilterFile(object):
def __init__(self, f):
self.f = f
def filtered_ref(self, val):
f = self.f[self.f['REF'] == val]
self.f = f
return self.f
在上面的示例中,我可以在 File 类中访问过滤后的 df 和原始 df,并且我将过滤和选择数据的方法分开。现在的问题是我不能将 File 方法 view_ref() 与 self.filter 实例一起使用。
我很难确定如何最好地组织这段代码。有人可以帮我指出最pythonic的方向来组织这个吗?
【问题讨论】:
标签: python python-3.x class oop organization