
You could shorten this... def __call__(self): return self.avg, self.stdev Now it's even more dense and allows for indexing the results: p = Statistics([4, 5, 6])()[0] --rich On 1/17/11 09:54 , K. Richard Pixley wrote:
If the values involved are sufficiently weakly related, then I question whether it's appropriate to calculate them at all. If the most frequent use is to select out a subset of the values, then even calculating the other values seems like a wasted effort.
To take "average" and "stdev" as an example...
If you use an object to represent not the range of return values, but the domain of input values, then you can use @property accessors for the results.
class Statisics(object): def __init__(self, list): self.list = list
@property def avg(self): return ...
@property def stdev(self): return ...
@property def inputs(self): return self.list
@property def outputs(self): return self.avg, self.stdev
Now you have the syntactic appearance of selecting from multiple values in either one step or two, your choice.
x = Statistics([1, 2, 3]).stdev y, z = Statistics([1, 2, 3]).outputs
p = Statistics([4, 5, 6]) q = p.avg
--rich
_______________________________________________ Python-ideas mailing list Python-ideas@python.org http://mail.python.org/mailman/listinfo/python-ideas