__new__
and __init__
methods. A new instance is created by calling the class as if it were a function, which calls the __new__
and __init__
 methods. If a constructor method is not defined in the class, the next one found in the class's Method Resolution Order will be called. In the typical case, only the __init__
 method need be defined. (The most common exception is for immutable objects.)>>> class My_Class(object):
def __new__(cls, value):
print("Creating new instance...")
# Call the superclass constructor to create the instance.
instance = super(My_Class, cls).__new__(cls)
return instance
def __init__(self, value):
print("Initialising instance...")
self.payload = value
>>> sampleInstance = My_Class(36)
Creating new instance...
Initialising instance...
>>> print(sampleInstance.payload)
36
>>>
The destructor is defined using __del__(self)
. In the example, the obj is created and manually deleted, therefore, both messages will be displayed. However, if you comment out the last line ‘del obj’, the destructor will not be called immediately. Instead, the Garbage Collector (GC) will take care of the deletion automatically, which you never know when for sure.
>>> class Test_1:
def __init__(self):
print ("constructor")
def __del__(self):
print ("destructor")
>>> print ("constructor")
constructor
>>> obj = Test_1()
constructor
>>> del obj
destructor
>>>