How do __new__ and __init__ differ during normal Python instance construction?
__new__
__init__
They are interchangeable names for the same method.
__new__ destroys old instances and __init__ destroys new ones.
__init__ creates the instance before __new__ runs.
__new__ creates and returns the instance first; __init__ then initializes that instance.