【发布时间】:2018-09-05 23:29:54
【问题描述】:
我有以下课程:
class Result(UserDict):
"""Implements a especial version of dictionary, that will return the keys
ordered in the initialized way"""
def __init__(self, keys_order, items):
super().__init__(self)
self.__keys_order = keys_order
self.data = items
def __repr__(self):
attributes = ["{}:{}".format(_stringify(k), _stringify(self.data[k])) for k in self.keys()]
return "{}".format(", ".join(attributes))
def keys(self):
return [key for key in self.__keys_order]
class Results(UserList):
"""Implements a especial kind of list, that has a method to_df"""
def to_df(self):
return pd.DataFrame(self.data, columns=self.data[0].keys())
这样,当我打印Result 的实例时,它将以所需的方式(由keys_order 确定)显示它的键。此外,Results 类实现了to_df 方法,该方法返回一个熊猫DataFrame,其中的列按键排序。
例如,我知道如果我希望 len(results) 函数以特殊方式运行,我必须在其中实现 __len__ 方法,以类似的方式,是否可以实现特殊方法,所以当pd.DataFrame(results) 是在 results 实例上调用的,它会调用 to_df 方法吗?所以我有按键排序的列。
【问题讨论】:
-
您能否提供一些使用您的类的示例代码以及您期望的输出类型?
标签: python-3.x pandas oop metaprogramming