mirror of
https://github.com/python/cpython.git
synced 2024-11-25 19:03:49 +08:00
* Hide a loop induction variable that was inadvertantly being picked up
by the locals() call in the context constructor. * Remove unnecessary properties for int, exp, and sign which duplicated information returned by as_tuple().
This commit is contained in:
parent
fed52963fc
commit
b91af521fd
@ -2054,17 +2054,6 @@ class Decimal(object):
|
|||||||
except TypeError:
|
except TypeError:
|
||||||
return 0
|
return 0
|
||||||
|
|
||||||
#properties to immutability-near feature
|
|
||||||
def _get_sign(self):
|
|
||||||
return self._sign
|
|
||||||
def _get_int(self):
|
|
||||||
return self._int
|
|
||||||
def _get_exp(self):
|
|
||||||
return self._exp
|
|
||||||
sign = property(_get_sign)
|
|
||||||
int = property(_get_int)
|
|
||||||
exp = property(_get_exp)
|
|
||||||
|
|
||||||
# support for pickling, copy, and deepcopy
|
# support for pickling, copy, and deepcopy
|
||||||
def __reduce__(self):
|
def __reduce__(self):
|
||||||
return (self.__class__, (str(self),))
|
return (self.__class__, (str(self),))
|
||||||
@ -2120,8 +2109,10 @@ class Context(object):
|
|||||||
_ignored_flags=[]):
|
_ignored_flags=[]):
|
||||||
if not isinstance(flags, dict):
|
if not isinstance(flags, dict):
|
||||||
flags = dict([(s,s in flags) for s in _signals])
|
flags = dict([(s,s in flags) for s in _signals])
|
||||||
|
del s
|
||||||
if traps is not None and not isinstance(traps, dict):
|
if traps is not None and not isinstance(traps, dict):
|
||||||
traps = dict([(s,s in traps) for s in _signals])
|
traps = dict([(s,s in traps) for s in _signals])
|
||||||
|
del s
|
||||||
for name, val in locals().items():
|
for name, val in locals().items():
|
||||||
if val is None:
|
if val is None:
|
||||||
setattr(self, name, copy.copy(getattr(DefaultContext, name)))
|
setattr(self, name, copy.copy(getattr(DefaultContext, name)))
|
||||||
|
@ -954,34 +954,6 @@ class DecimalUsabilityTest(unittest.TestCase):
|
|||||||
d = Decimal("Infinity")
|
d = Decimal("Infinity")
|
||||||
self.assertEqual(d.as_tuple(), (0, (0,), 'F') )
|
self.assertEqual(d.as_tuple(), (0, (0,), 'F') )
|
||||||
|
|
||||||
def test_immutability_onpurpose(self):
|
|
||||||
#Try to change internal objects and see if immutable.
|
|
||||||
|
|
||||||
d = Decimal(42)
|
|
||||||
|
|
||||||
#you can get the attributes...
|
|
||||||
d.exp
|
|
||||||
d.int
|
|
||||||
d.sign
|
|
||||||
|
|
||||||
#...but not change them!
|
|
||||||
try:
|
|
||||||
d.exp = 20
|
|
||||||
d.int = 3
|
|
||||||
d.sign = 1
|
|
||||||
except AttributeError:
|
|
||||||
pass
|
|
||||||
else:
|
|
||||||
self.fail('Did not raised an error!')
|
|
||||||
|
|
||||||
#some new attribute
|
|
||||||
try:
|
|
||||||
d.newone = None
|
|
||||||
except AttributeError:
|
|
||||||
pass
|
|
||||||
else:
|
|
||||||
self.fail('Did not raised an error!')
|
|
||||||
|
|
||||||
def test_immutability_operations(self):
|
def test_immutability_operations(self):
|
||||||
# Do operations and check that it didn't change change internal objects.
|
# Do operations and check that it didn't change change internal objects.
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user