Add a few ``__dynamic__ = 0'' lines in classes that need to preserve

staticness when __dynamic__ = 1 becomes the default:

- Some classes which are used to test the difference between static
  and dynamic.

- Subclasses of complex: complex uses old-style numbers and the slot
  wrappers used by dynamic classes only support new-style numbers.
  (Ideally, the complex type should be fixed, but that looks like a
  labor-intensive job.)
This commit is contained in:
Guido van Rossum 2001-09-29 00:40:25 +00:00
parent 4bb1e36eec
commit 751c4c864c
1 changed files with 7 additions and 3 deletions

View File

@ -832,9 +832,10 @@ def dynamics():
verify(list.__dynamic__ == 0) verify(list.__dynamic__ == 0)
class S1: class S1:
__metaclass__ = type __metaclass__ = type
__dynamic__ = 0
verify(S1.__dynamic__ == 0) verify(S1.__dynamic__ == 0)
class S(object): class S(object):
pass __dynamic__ = 0
verify(S.__dynamic__ == 0) verify(S.__dynamic__ == 0)
class D(object): class D(object):
__dynamic__ = 1 __dynamic__ = 1
@ -1522,6 +1523,7 @@ def inherits():
verify((+a).__class__ is float) verify((+a).__class__ is float)
class madcomplex(complex): class madcomplex(complex):
__dynamic__ = 0
def __repr__(self): def __repr__(self):
return "%.17gj%+.17g" % (self.imag, self.real) return "%.17gj%+.17g" % (self.imag, self.real)
a = madcomplex(-3, 4) a = madcomplex(-3, 4)
@ -1901,11 +1903,12 @@ def rich_comparisons():
if verbose: if verbose:
print "Testing rich comparisons..." print "Testing rich comparisons..."
class Z(complex): class Z(complex):
pass __dynamic__ = 0
z = Z(1) z = Z(1)
verify(z == 1+0j) verify(z == 1+0j)
verify(1+0j == z) verify(1+0j == z)
class ZZ(complex): class ZZ(complex):
__dynamic__ = 0
def __eq__(self, other): def __eq__(self, other):
try: try:
return abs(self - other) <= 1e-6 return abs(self - other) <= 1e-6
@ -1992,7 +1995,8 @@ def coercions():
coerce(0, F(0)) coerce(0, F(0))
coerce(0L, F(0)) coerce(0L, F(0))
coerce(0., F(0)) coerce(0., F(0))
class C(complex): pass class C(complex):
__dynamic__ = 0
coerce(C(0), 0) coerce(C(0), 0)
coerce(C(0), 0L) coerce(C(0), 0L)
coerce(C(0), 0.) coerce(C(0), 0.)