现在我有上面的源代码:哪种更简洁的方式来获取Python @property作为具有特定条件的列表?
class Stats(object):
def __init__(self):
self._pending = []
self._done = []
@property
def pending(self):
return self._pending
这些列表中填充的方式是不是我的问题很重要。
的情况是,我得到这些名单的子表是这样的:
stats = Stats()
// code to fill the lists
stats.pending[2:10]
这里的问题是,我希望得到我检索尽可能多的元素。 在上面的例子中,我期望一个包含8个元素(10-2)的子列表。
当然,如果列表更短,实际上我会得到少于8个元素。
所以,我需要的是:
- 当列表中有足够的项目,则返回相应的子集。
- 当列表较短时,它会返回一个具有预期长度的子列表,其中包含原始列表的最后一个元素和一个默认值(例如None)。
这样一来,如果我这样做:
pending_tasks = stats.pending[44:46]
而未决列表仅包含30个元素,它应该返回两个默认元素的列表,例如:无,无]而不是空列表([]),这是列表的默认行为。
我想我已经知道如何在普通的方法/函数内部完成它,但我想以最干净的方式来完成,如果可能的话,试图遵循@property方法。
非常感谢!
你知道吗? (我的意思是如何用普通的方法做到这一点?)如何?你怎么能使属性解析机制感觉到,属性解析后会有切片操作?我只能想到使用代理对象,但这可能会变得混乱。我只是出于好奇而问。 –