Python中的示例
我正在使用仅以两个值为特征的数据:起点和终点。让我们假设这些对应于染色体的起点和终点。所以数据看起来像:
(1,50)
(20, 500)
(40, 80)
...
现在我需要添加一些功能。例如,假设我想开始将它们用作集合,或者按起始值对它们进行排序。我对OOP有偏见的第一个倾向是为这些具有start, end
等属性和as_set()
等方法的对象创建一个小类。
class Range(object):
def __init__(start, end):
self.start = start
self.end = end
def as_set(self):
""" Set of integers on range {start, end} """
return set(range(self.start, self.end))
另一种设计方法是创建一个具有严格调用签名的函数库:
def as_set(start, end):
return set(range(start, end))
我认为具有属性访问权限的Range
对象将使涉及排序的操作更容易,但代价是什么。在半性能危急情况下,您是否会不惜一切代价避免使用类,或者内存开销通常值得获得收益?换句话说,在什么情况下应该避免实现新类来存储简单数据?例如,这会减慢NP-hard算法的速度,或者只是增加内存开销,同时保留或多或少地保留算法的大O?我知道这取决于用例,但我正在寻找关于何时走一条路线与另一条路线的一般考虑因素。