Thank you. I'm clear after I read the doc: If __new__() returns an instance of cls, then the new instance's __init__() method will be invoked like "__init__(self[, ...])", where self is the new instance and the remaining arguments are the same as were passed to __new__().
If __new__() does not return an instance of cls, then the new instance's __init__() method will not be invoked. __new__() is intended mainly to allow subclasses of immutable types (like int, str, or tuple) to customize instance creation. On Tue, 29 Mar 2005 18:12:41 -0700, Steven Bethard <[EMAIL PROTECTED]> wrote: > could ildg wrote: > > As there is already __init__, why need a __new__? > > What can __new__ give us while __init__ can't? > > In what situations we should use __new__? > > And in what situations we must use __new__? > > Can __new__ take the place of __init__? > > I believe the current documentation will be updated when 2.4.1 is > released, but documentation for __new__ is now available at: > > http://www.python.org/dev/doc/devel/ref/customization.html > > In short, you could use __new__ in place of __init__, but it's probably > only useful to do so if you need to change an instance *before* it's > created. In general, if you aren't subclassing an immutable type, and > you're not sure that you need __new__, you probably don't. > > STeVe > -- > http://mail.python.org/mailman/listinfo/python-list > -- http://mail.python.org/mailman/listinfo/python-list