is extending an object considered acceptable usage?

Larry Bates lbates at
Fri Jan 28 09:49:49 EST 2005

When I want to do what I think you are asking, I create
an iterator in that returns a category item each time
the .next method is called.  That way you can write.

     <do anything>

in my item class:

class item:
     def __init__(self, <other args>):
         self.next_index=0       # Index point for next method

     def __iter__(self):
         return self

     def next(self):
         # Try to get the next route
         try: CATEGORY=self.CATEGORIES[self.next_index]
             raise StopIteration
         # Increment the index pointer for the next call
         return CATEGORY

I had one project where these were nested 5-6 deep
and the resultant code reads beautifully.

Larry Bates

mike wrote:
> i have an Item which belongs to a Category, so Item has:
> - item.categoryId, the database primary key of its Category
> - item.category, a reference to its Category.  this null unless i need a 
> reference from item to its Category object, in which case i call 
> setCategory(category)
> sometimes i want a list of categories, and from each i want to be able 
> to access a list of its items.  in this case is it considered acceptable 
> to just create a list of those items and assign it as a property of 
> their category?  eg:
>   category.items = listOfItems
> this packages everything up into a hierarchy and is more convenient to 
> use, especially in Cheetah templates, but requries modifying the 
> structure of the object, which bothers me (probably for some 
> subconscious java-related reason).
> the alternative might be to create a dictionary that keys the lists of 
> items on their category:
>   items = {}
>   items[] = listOfItems
> this feels less "controversial" to me, but requires extra objects and 
> house-keeping.
> thanks - just curious if there were arguments one way or the other.

More information about the Python-list mailing list