使__add__返回算术平均值
我想加我的对象Foo的方法返回平均总和。对于只有两个对象的总和起来很简单:使__add__返回算术平均值
class Foo(): def __init__(self, n):
self.n = n
def __add__(self, other):
return Foo((self.n + other.n)/2)
如何为N>2
对象做到这一点?例如。 Foo(0) + Foo(1) + Foo(2) + Foo(3)
应返回Foo((0 + 1 + 2 + 3)/4)
,即Foo(1.5)
。
========================================
编辑:这是我的解决方案
class Foo(): def __init__(self, n):
self.n = n
self._n = n
self._count = 1
def __add__(self, other):
out = Foo(self._n + other._n)
out._count = self._count + other._count
out.n = out.n/out._count
return out
无法得到算术平均值的最佳方式,但我需要做这种方式。此外,这还演示了如何执行用户定义对象的特殊添加,该对象返回对象总和的函数。例如。使__add__
返回的对象的总和的平方根:
class Bar(): def __init__(self, n):
self.n = n
self._n = n
def __add__(self, other):
out = Bar(self._n + other._n)
out.n = (out.n)**0.5
return out
回答:
一种解决方案可以在类中的两个数字来存储:平均值和样本数量:
class Foo: def __init__(self, avg, count=1):
self.avg = avg
self.count = count
def __add__(self, other):
return Foo((self.avg*self.count + other.avg*other.count)
/
(self.count + other.count),
self.count + other.count)
更妙的是仅存储总和并仅在请求时计算平均值。
以上是 使__add__返回算术平均值 的全部内容, 来源链接: utcz.com/qa/258194.html