tests/class_new: Add another testcase for __new__/__init__ interaction.

Similar to the existing testcase, but test that returning both value of
native type and instance of another user class from __new__ lead to
__init__ not being called, for better coverage.
This commit is contained in:
Paul Sokolovsky 2017-09-01 00:39:06 +03:00
parent ca21aed0a1
commit b349479a49
1 changed files with 21 additions and 0 deletions

View File

@ -34,6 +34,9 @@ a.meth()
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)
@ -43,3 +46,21 @@ class B:
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))