tests/object_new: Better messages, check user __new__() method.

Make messages more verbose and easier to follow and check that user class'
__new__() is not called by object.__new__(user_class).
This commit is contained in:
Paul Sokolovsky 2017-08-30 21:29:23 +03:00
parent df6605eaba
commit b565c36963
1 changed files with 10 additions and 4 deletions

View File

@ -12,6 +12,11 @@ except AttributeError:
class Foo:
def __new__(cls):
# Should not be called in this test
print("in __new__")
raise RuntimeError
def __init__(self):
print("in __init__")
self.attr = "something"
@ -19,12 +24,13 @@ class Foo:
o = object.__new__(Foo)
print(hasattr(o, "attr"))
print(isinstance(o, Foo))
print("Result of __new__ has .attr:", hasattr(o, "attr"))
print("Result of __new__ is already a Foo:", isinstance(o, Foo))
print(hasattr(o, "attr"))
print("After __init__ has .attr:", hasattr(o, "attr"))
print(".attr:", o.attr)
# should only be able to call __new__ on user types