[Python-checkins] CVS: python/dist/src/Misc NEWS,1.254,1.255
Guido van Rossum
gvanrossum@users.sourceforge.net
Mon, 24 Sep 2001 21:15:43 -0700
Update of /cvsroot/python/python/dist/src/Misc
In directory usw-pr-cvs1:/tmp/cvs-serv12731
Modified Files:
NEWS
Log Message:
Separate out the type/class-related news and reword some items.
Add news items about comparisons, repr(), __class__ assignment.
Index: NEWS
===================================================================
RCS file: /cvsroot/python/python/dist/src/Misc/NEWS,v
retrieving revision 1.254
retrieving revision 1.255
diff -C2 -d -r1.254 -r1.255
*** NEWS 2001/09/24 21:17:50 1.254
--- NEWS 2001/09/25 04:15:41 1.255
***************
*** 2,6 ****
===========================
! Core
- property() now takes 4 keyword arguments: fget, fset, fdel and doc.
--- 2,18 ----
===========================
! Type/class unification and new-style classes
!
! - pydoc and inspect are now aware of new-style classes;
! e.g. help(list) at the interactive prompt now shows proper
! documentation for all operations on list objects.
!
! - Applications using Jim Fulton's ExtensionClass module can now safely
! be used with Python 2.2. In particular, Zope 2.4.1 now works with
! Python 2.2 (as well as with Python 2.1.1). The Demo/metaclass
! examples also work again. It is hoped that Gtk and Boost also work
! with 2.2a4 and beyond. (If you can confirm this, please write
! webmaster@python.org; if there are still problems, please open a bug
! report on SourceForge.)
- property() now takes 4 keyword arguments: fget, fset, fdel and doc.
***************
*** 10,60 ****
associate a docstring with a property.
! - file.writelines() now accepts any iterable object producing strings.
! - PyUnicode_FromEncodedObject() now works very much like
! PyObject_Str(obj) in that it tries to use __str__/tp_str
! on the object if the object is not a string or buffer. This
! makes unicode() behave like str() when applied to non-string/buffer
! objects.
! - PyFile_WriteObject now passes Unicode object to the file's write
! method. As a result, all file-like object which may be the target
! of a print statement must support Unicode objects, i.e. they must
! at least convert them into ASCII strings.
- The builtin file type can be subclassed now. In the usual pattern,
"file" is the name of the builtin type, and file() is a new builtin
constructor, with the same signature as the builtin open() function.
file() is now the preferred way to open a file.
-
- - In 2.2a3, *for new-style classes only*, __getattr__ was called for
- every attribute access. This was confusing because it differed
- significantly from the behavior of classic classes, where it was
- only called for missing attributes. Now, __getattr__ is called only
- if regular attribute access raises AttributeError; to catch *all*
- attribute access, *for new-style classes only*, you can use
- __getattribute__. If both are defined, __getattribute__ is called
- first, and if it raises AttributeError, __getattr__ is called.
! - In 2.2a3, __new__ would only see sequential arguments passed to the
! type in a constructor call; __init__ would see both sequential and
! keyword arguments. This made no sense whatsoever any more, so
now both __new__ and __init__ see all arguments.
! - In 2.2a3, hash() applied to an instance of a subclass of str or unicode
! always returned 0. This has been repaired.
! - In 2.2a3, an operation on an instance of a subclass of an immutable type
! (int, long, float, complex, tuple, str, unicode), where the subtype
! didn't override the operation (and so the operation was handled by the
! builtin type), could return that instance instead a value of the base
! type. For example, if s was of a str sublass type, s[:] returned s
! as-is. Now it returns a str with the same value as s.
! - Applications using Jim Fulton's ExtensionClass module can now safely
! be used with Python 2.2. In particular, Zope 2.4.1 now works with
! Python 2.2 (as well as with Python 2.1.1). The Demo/metaclass
! examples also work again.
- Thread scheduling on Solaris should be improved; it is no longer
necessary to insert a small sleep at the start of a thread in order
--- 22,88 ----
associate a docstring with a property.
! - Comparison overloading is now more completely implemented. For
! example, a str subclass instance can properly be compared to a str
! instance, and it can properly overload comparison. Ditto for most
! other built-in object types.
! - The repr() of new-style classes has changed; instead of <type
! 'M.Foo'> a new-style class is now rendered as <class 'M.Foo'>,
! *except* for built-in types, which are still rendered as <type
! 'Foo'> (to avoid upsetting existing code that might parse or
! otherwise rely on repr() of certain type objects).
! - The repr() of new-style objects is now always <Foo object at XXX>;
! previously, it was sometimes <Foo instance at XXX>.
+ - For new-style classes, what was previously called __getattr__ is now
+ called __getattribute__. This method, if defined, is called for
+ *every* attribute access. A new __getattr__ hook mor similar to the
+ one in classic classes is defined which is called only if regular
+ attribute access raises AttributeError; to catch *all* attribute
+ access, you can use __getattribute__ (for new-style classes). If
+ both are defined, __getattribute__ is called first, and if it raises
+ AttributeError, __getattr__ is called.
+
+ - The __class__ attribute of new-style objects can be assigned to.
+ The new class must have the same C-level object layout as the old
+ class.
+
- The builtin file type can be subclassed now. In the usual pattern,
"file" is the name of the builtin type, and file() is a new builtin
constructor, with the same signature as the builtin open() function.
file() is now the preferred way to open a file.
! - Previously, __new__ would only see sequential arguments passed to
! the type in a constructor call; __init__ would see both sequential
! and keyword arguments. This made no sense whatsoever any more, so
now both __new__ and __init__ see all arguments.
! - Previously, hash() applied to an instance of a subclass of str or
! unicode always returned 0. This has been repaired.
! - Previously, an operation on an instance of a subclass of an
! immutable type (int, long, float, complex, tuple, str, unicode),
! where the subtype didn't override the operation (and so the
! operation was handled by the builtin type), could return that
! instance instead a value of the base type. For example, if s was of
! a str sublass type, s[:] returned s as-is. Now it returns a str
! with the same value as s.
! Core
!
! - file.writelines() now accepts any iterable object producing strings.
+ - PyUnicode_FromEncodedObject() now works very much like
+ PyObject_Str(obj) in that it tries to use __str__/tp_str
+ on the object if the object is not a string or buffer. This
+ makes unicode() behave like str() when applied to non-string/buffer
+ objects.
+
+ - PyFile_WriteObject now passes Unicode object to the file's write
+ method. As a result, all file-like object which may be the target
+ of a print statement must support Unicode objects, i.e. they must
+ at least convert them into ASCII strings.
+
- Thread scheduling on Solaris should be improved; it is no longer
necessary to insert a small sleep at the start of a thread in order
***************
*** 102,109 ****
Tool to a standard library package. (Tools/compiler still exists as
a sample driver.)
-
- - pydoc and inspect are now aware of new-style classes;
- e.g. help(list) at the interactive prompt now shows proper
- documentation for all operations on list objects.
Tools
--- 130,133 ----