问题
在 python 2.7 中,我想创建一个自定义列表,通过预先填充一些静态元素来扩展 python 列表。我还想通过添加一些自定义方法(即过滤、重新初始化等...)来扩展 python 列表。
例如:
my_list = FitFuctionsList()
应该给我一个已经填充了一些固定元素的列表。
我试图从 python 继承list
:
class FitFuctionsList(list):
def __init__(self):
list.__init__(['some', 'fixed', 'list'])
但初始化失败(返回一个空列表)。
也欢迎就替代方法提出建议。
解决方案总结
nachshon提供了一个可行的解决方案,尽管他没有解释它为什么起作用(以及为什么前面的例子没有):
class FitFuctionsList(list):
def __init__(self):
super(FitFuctionsList, self).__init__(['some', 'fixed', 'list'])
如果只需要用固定值初始化列表(没有自定义方法),Claudiu提供了一种巧妙的方法,使用带有属性的辅助函数来初始化列表。这种方法优雅而健壮,因为它避免使用全局变量:
def FitFuctionsList():
return list(FitFuctionsList.prefilled_elements)
FitFuctionsList.prefilled_elements = ["a", "b", "rofl"]