diff options
Diffstat (limited to 'numpy/lib')
-rw-r--r-- | numpy/lib/polynomial.py | 5 | ||||
-rw-r--r-- | numpy/lib/tests/test_polynomial.py | 14 |
2 files changed, 16 insertions, 3 deletions
diff --git a/numpy/lib/polynomial.py b/numpy/lib/polynomial.py index e18bbc8bc..f49b7e295 100644 --- a/numpy/lib/polynomial.py +++ b/numpy/lib/polynomial.py @@ -1040,7 +1040,7 @@ class poly1d(object): @property def coeffs(self): - """ The polynomial coefficients """ + """ A copy of the polynomial coefficients """ return self._coeffs.copy() @property @@ -1060,8 +1060,7 @@ class poly1d(object): return roots(self._coeffs) # our internal _coeffs property need to be backed by __dict__['coeffs'] for - # scipy to work correctly. Note that as a result, the getter for .coeffs - # does not run unless accessed through one of its aliases. + # scipy to work correctly. @property def _coeffs(self): return self.__dict__['coeffs'] diff --git a/numpy/lib/tests/test_polynomial.py b/numpy/lib/tests/test_polynomial.py index f1e4543bb..0725c186d 100644 --- a/numpy/lib/tests/test_polynomial.py +++ b/numpy/lib/tests/test_polynomial.py @@ -222,6 +222,20 @@ class TestDocs(TestCase): assert_equal(p == p2, False) assert_equal(p != p2, True) + def test_poly_coeffs_immutable(self): + """ Coefficients should not be modifiable """ + p = np.poly1d([1, 2, 3]) + + try: + # despite throwing an exception, this used to change state + p.coeffs += 1 + except Exception: + pass + assert_equal(p.coeffs, [1, 2, 3]) + + p.coeffs[2] += 10 + assert_equal(p.coeffs, [1, 2, 3]) + if __name__ == "__main__": run_module_suite() |