Greg Ward wrote:
On 05 March 2005, Nick Coghlan said:

Steven Bethard has put together some text to add __new__ to the list of Basic Customisation methods in the language reference. Would one of the documentation folks care to take a look at it?


I've tried to tighten up the text there and hopefully make it a smidgeon
clearer and more accurate.  Here's my best effort:

  __new__(cls[, ...])

  Called to create a new instance of class 'cls'.  __new__()
  is a static method (special-cased so you need not declare it
  as such) that takes the class to create an instance of as
  the first argument.  The remaining arguments are those
  passed to the object constructor expression.  The return
  value of __new__() should be the new object instance.

Just to offer alternatives:

  __new__(cls[, ...])

   __new__() is a static method (special-cased so you need
  not declare it as such) whose fist argumen is the class
  of which a new instance is required. The remaining arguments
  are those passed to the object constructor expression (the
  call to the class).  The return value of __new__() should be
  the new instance object, which is not constrained to be of
  type 'cls'.


  Typical usage is to create a new instance of the class by
  invoking the superclass's __new__() method using
  "super(currentclass, cls).__new__([...])" with appropriate
  arguments, modifying the returned instance if necessary, and
  then returning it.  If the returned value is an instance of
  'cls', its __init__() will be invoked like
  "__init__(self[, ...])", where the extra arguments are the
  same as were passed to __new__().

  Typical usage creates a new instance of the required
  class by invoking the superclass's __new__() method
  using "super(currentclass, cls).__new__(...)" with
  appropriate argumnents and then modifying the newly-
  created instance as necessary before returning it.

  If __new__() returns an instance of 'cls' then the new
  instance's __init__() method will be called with the
  instance itself as the first argument and the remaining
  arguments being the second and subsequent arguments to
  __new__().

  You do need not to return an instance of 'cls', but if you
  do not, the new instance's __init__() method will not be
  invoked.

  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.

Feedback welcome.  Has anyone volunteered to render this in LaTeX yet?
If not, I might.

Greg

I decided some time ago that documenting Python in LaTex wasn't my forte ...

regards
 Steve

_______________________________________________
Python-Dev mailing list
Python-Dev@python.org
http://mail.python.org/mailman/listinfo/python-dev
Unsubscribe: 
http://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com

Reply via email to