Fix SF bug #472234: type(obj) calls type->tp_init (Roeland Rengelink)
The fix is a band-aid: type_call() now makes the same exception for a
single-argument call to type() as type_new() was already making.
diff --git a/Lib/test/test_descr.py b/Lib/test/test_descr.py
index c9235c8..962c1cc 100644
--- a/Lib/test/test_descr.py
+++ b/Lib/test/test_descr.py
@@ -716,6 +716,18 @@
return "D" + self.__super._get_x()
vereq(D().x, "DCBA")
+ # Make sure type(x) doesn't call x.__class__.__init__
+ class T(type):
+ counter = 0
+ def __init__(self, *args):
+ T.counter += 1
+ class C:
+ __metaclass__ = T
+ vereq(T.counter, 1)
+ a = C()
+ vereq(type(a), C)
+ vereq(T.counter, 1)
+
def pymods():
if verbose: print "Testing Python subclass of module..."
log = []