bpo-36018: Make __pos__ return a distinct instance of NormDist (GH-12009)

https://bugs.python.org/issue36018
This commit is contained in:
Raymond Hettinger 2019-02-23 22:19:01 -08:00 committed by Miss Islington (bot)
parent e895de3e7f
commit 79fbcc597d
2 changed files with 13 additions and 1 deletions

View File

@ -762,7 +762,7 @@ class NormalDist:
return NormalDist(x1.mu / x2, x1.sigma / fabs(x2)) return NormalDist(x1.mu / x2, x1.sigma / fabs(x2))
def __pos__(x1): def __pos__(x1):
return x1 return NormalDist(x1.mu, x1.sigma)
def __neg__(x1): def __neg__(x1):
return NormalDist(-x1.mu, x1.sigma) return NormalDist(-x1.mu, x1.sigma)

View File

@ -2128,6 +2128,18 @@ class TestNormalDist(unittest.TestCase):
with self.assertRaises(statistics.StatisticsError): with self.assertRaises(statistics.StatisticsError):
Y.cdf(90) Y.cdf(90)
def test_unary_operations(self):
NormalDist = statistics.NormalDist
X = NormalDist(100, 12)
Y = +X
self.assertIsNot(X, Y)
self.assertEqual(X.mu, Y.mu)
self.assertEqual(X.sigma, Y.sigma)
Y = -X
self.assertIsNot(X, Y)
self.assertEqual(X.mu, -Y.mu)
self.assertEqual(X.sigma, Y.sigma)
def test_same_type_addition_and_subtraction(self): def test_same_type_addition_and_subtraction(self):
NormalDist = statistics.NormalDist NormalDist = statistics.NormalDist
X = NormalDist(100, 12) X = NormalDist(100, 12)