Hi Kent, Kent Johnson wrote on 29.09.2005:
>>Data.Base has no base classes, so it is not based on a built-in >>type: How can it be a new-style class? > >Data.Base is not a new-style class, but the classes in Show are. And >properties may appear to work in old-style classes. This document >http://www.python.org/2.2.3/descrintro.html#property says, >Properties do not work for classic classes, but you don't get a >clear error when you try this. Your get method will be called, so it >appears to work, but upon attribute assignment, a classic class >instance will simply set the value in its __dict__ without calling >the property's set method, and after that, the property's get method >won't be called either. Thanks for your quick reply. I read the document you mentioned before, that's why I was confused. My actual code looks like this: class Base: def GetOwnType(self): try: return self._own_type except: return self.child_type def SetOwnType(self, value): self._own_type = value own_type = property(GetOwnType, SetOwnType) For some of the subclasses of Base, the attribute own_type is defined, the others should use child_type. For both groups of subclasses, this works fine - if own_type has not been set somewhere else, self.child_type is returned when calling self.own_type. When checking Data.Base.__mro__, I get an error, so it is not a new-style class by itself. On the other hand, every time I use the own_type attribute, I do so via instances of new-style classes (Show.Page, Show.Author etc). Could it be that the nature of these classes makes the code in Data.Base behave according to the new-style rules? Thanks, Jan -- I'd never join any club that would have the likes of me as a member. - Groucho Marx _______________________________________________ Tutor maillist - Tutor@python.org http://mail.python.org/mailman/listinfo/tutor