| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566 |
- try:
- # If we don't expose object.__new__ (small ports), there's
- # nothing to test.
- object.__new__
- except AttributeError:
- print("SKIP")
- raise SystemExit
- class A:
- def __new__(cls):
- print("A.__new__")
- return super(cls, A).__new__(cls)
- def __init__(self):
- print("A.__init__")
- def meth(self):
- print('A.meth')
- #print(A.__new__)
- #print(A.__init__)
- a = A()
- a.meth()
- a = A.__new__(A)
- a.meth()
- #print(a.meth)
- #print(a.__init__)
- #print(a.__new__)
- # __new__ should automatically be a staticmethod, so this should work
- a = a.__new__(A)
- a.meth()
- # __new__ returns not an instance of the class (None here), __init__
- # should not be called
- class B:
- def __new__(self, v1, v2):
- print("B.__new__", v1, v2)
- def __init__(self, v1, v2):
- # Should not be called in this test
- print("B.__init__", v1, v2)
- print("B inst:", B(1, 2))
- # Variation of the above, __new__ returns an instance of another class,
- # __init__ should not be called
- class Dummy: pass
- class C:
- def __new__(cls):
- print("C.__new__")
- return Dummy()
- def __init__(self):
- # Should not be called in this test
- print("C.__init__")
- c = C()
- print(isinstance(c, Dummy))
|