Use __new__ when you need to control the creation of a new instance. Use __init__ when you need to control initialization of a new instance. __new__ is the first step of instance creation. It's called first, and is responsible for returning a new instance of your class. In contrast, __init__ doesn't return anything; it's only responsible for initializing the instance after it's been created. In general, you shouldn't need to override __new__ unless you're subclassing an immutable type like str, int, unicode or tuple. Some references: The description of new style classes goes into some depth about how instance creation works, including examples of overriding __new__ and __init__. http://www.python.org/download/releases/2.2/descrintro/ The reference manual has a section on class customization, but I don't think it goes into enough depth to really answer your question: http://docs.python.org/ref/customization.html From https://mail.python.org/pipermail/tutor/2008-April/061426.html
When to use __new__ vs __init__
最新推荐文章于 2024-10-02 10:53:34 发布