[Python-checkins] r69547 - in python/branches/py3k: Lib/numbers.py Lib/test/test_fractions.py Misc/NEWS

mark.dickinson python-checkins at python.org
Thu Feb 12 18:58:37 CET 2009


Author: mark.dickinson
Date: Thu Feb 12 18:58:36 2009
New Revision: 69547
Log:
Issue 4998: restore utility of __slots__ on Fraction.
(forward merge of r68813).
Modified:
 python/branches/py3k/Lib/numbers.py
 python/branches/py3k/Lib/test/test_fractions.py
 python/branches/py3k/Misc/NEWS
Modified: python/branches/py3k/Lib/numbers.py
==============================================================================
--- python/branches/py3k/Lib/numbers.py	(original)
+++ python/branches/py3k/Lib/numbers.py	Thu Feb 12 18:58:36 2009
@@ -15,6 +15,8 @@
 If you just want to check if an argument x is a number, without
 caring what kind, use isinstance(x, Number).
 """
+ __slots__ = ()
+
 # Concrete numeric types must provide their own hash implementation
 __hash__ = None
 
@@ -38,6 +40,8 @@
 type as described below.
 """
 
+ __slots__ = ()
+
 @abstractmethod
 def __complex__(self):
 """Return a builtin complex instance. Called for complex(self)."""
@@ -152,6 +156,8 @@
 Real also provides defaults for the derived operations.
 """
 
+ __slots__ = ()
+
 @abstractmethod
 def __float__(self):
 """Any Real can be converted to a native float object.
@@ -264,6 +270,8 @@
 class Rational(Real):
 """.numerator and .denominator should be in lowest terms."""
 
+ __slots__ = ()
+
 @abstractproperty
 def numerator(self):
 raise NotImplementedError
@@ -287,6 +295,8 @@
 class Integral(Rational):
 """Integral adds a conversion to int and the bit-string operations."""
 
+ __slots__ = ()
+
 @abstractmethod
 def __int__(self):
 """int(self)"""
Modified: python/branches/py3k/Lib/test/test_fractions.py
==============================================================================
--- python/branches/py3k/Lib/test/test_fractions.py	(original)
+++ python/branches/py3k/Lib/test/test_fractions.py	Thu Feb 12 18:58:36 2009
@@ -407,6 +407,11 @@
 self.assertEqual(id(r), id(copy(r)))
 self.assertEqual(id(r), id(deepcopy(r)))
 
+ def test_slots(self):
+ # Issue 4998
+ r = F(13, 7)
+ self.assertRaises(AttributeError, setattr, r, 'a', 10)
+
 def test_main():
 run_unittest(FractionTest, GcdTest)
 
Modified: python/branches/py3k/Misc/NEWS
==============================================================================
--- python/branches/py3k/Misc/NEWS	(original)
+++ python/branches/py3k/Misc/NEWS	Thu Feb 12 18:58:36 2009
@@ -163,6 +163,10 @@
 Library
 -------
 
+- Issue #4998: The memory saving effect of __slots__ had been lost on Fractions
+ which inherited from numbers.py which did not have __slots__ defined. The
+ numbers hierarchy now has its own __slots__ declarations.
+
 - Issue #4631: Fix urlopen() result when an HTTP response uses chunked
 encoding.
 


More information about the Python-checkins mailing list

AltStyle によって変換されたページ (->オリジナル) /