On Sun, 31 Dec 2006 03:57:04 -0800, Isaac Rodriguez wrote: > Hi, > > This is probably a very basic question, but I've been playing with new > style classes, and I cannot see any difference in behavior when a > declare a class as: > > class NewStyleClass(object): > > or > > class NewStyleClass: > > I declare property members in both and it seems to work the exact same > way.
Then you aren't looking very closely. Try with a calculated property. >>> class New(object): ... def __init__(self): ... self._n = 1 ... def getter(self): ... return "spam " * self._n ... def setter(self, n): ... self._n = n ... spam = property(getter, setter, None, None) ... >>> obj = New() >>> obj.spam 'spam ' >>> obj.spam = 3 >>> obj.spam 'spam spam spam ' >>> obj.spam = 7 >>> obj.spam 'spam spam spam spam spam spam spam ' Now try with an old-style class. >>> class Old: ... def __init__(self): ... self._n = 1 ... def getter(self): ... return "spam " * self._n ... def setter(self, n): ... self._n = n ... spam = property(getter, setter, None, None) ... >>> obj = Old() >>> obj.spam 'spam ' >>> obj.spam = 3 >>> obj.spam 3 Properties should not be used with old-style classes because they just don't work correctly. -- Steven. -- http://mail.python.org/mailman/listinfo/python-list