806ea1f6ca
Caveat is that __new__ should recurse to base class __new__, and ultimately, object.__new__ is what handles instance allocation.
21 lines
478 B
Python
21 lines
478 B
Python
# object.__new__(cls) is the only way in Python to allocate empty
|
|
# (non-initialized) instance of class.
|
|
# See e.g. http://infohost.nmt.edu/tcc/help/pubs/python/web/new-new-method.html
|
|
# TODO: Find reference in CPython docs
|
|
|
|
class Foo:
|
|
|
|
def __init__(self):
|
|
print("in __init__")
|
|
self.attr = "something"
|
|
|
|
|
|
o = object.__new__(Foo)
|
|
#print(o)
|
|
print(hasattr(o, "attr"))
|
|
print(isinstance(o, Foo))
|
|
o.__init__()
|
|
#print(dir(o))
|
|
print(hasattr(o, "attr"))
|
|
print(o.attr)
|