__init__ must create a new object.
__init__ must create a new object
__init__ does not create the object, it just initializes it
CorrectionHere is what's right.
__init__ method does not create an object, it only initializes the attributes of the object. The object is created before
__init__ is called.
__init__ is just a method that can be used to add attributes immediately after the object is already created.
Read through Python’s tutorial on Class Objects to learn more.
ValueHow can you build on this misconception?
This misconception is a great opportunity to discuss allocation / object creation versus attribute initialization. In Python, an object is created before its
__init__ method is called. The
__init__ method then customizes the object with an initial state, i.e., it sets the values of attributes of that object.
Opportunity to Discover Related Issues
If students use
C() inside the
__init__ method of class
C, you may discuss how this would recursively invoke the
__init__ method. Have them try this out, and see how it leads to an infinite recursion (i.e., a stack overflow).
If students assign the result of the instantiation to self, then they also have the SelfAssignable misconception.
If students return the result of the instantiaion, then they also have the InitReturnsObject misconception.