Dynamic objects

Mark Shewfelt mshewfelt at gmail.com
Thu Aug 17 15:35:35 EDT 2006


Thanks a lot Tim!

My __init__ functions didn't set the dictionaries like you did below
(e.g. self.equipment = {} ).

Newbie mistake - won't make that one again.

Thanks again,

Mark


Tim wrote:
> Mark Shewfelt wrote:
> > Hello,
> >
> > I have implemented a series of classes representing a Building, its
> > respective Equipment, and then various Components of that equipment
> > like so (as you'll be able to tell, I'm a newbie):
> >
> > class Building:
> >      equipment = {}
> >      def AddEquipment( name, data ):
> >           equipment[ name ] = Equipment( data )
> >
> > class Equipment:
> >      components = {}
> >      def AddComponent( name, data ):
> >            components[ name ] = Component( data )
> >
> > class Component:
> >      data = ""
> >
> > These classes are used like so:
> >
> > test = Building()
> > test.AddEquipment( "equipment 1", data )
> > test.AddEquipment( "equipment 2", data )
> > test.equipment["equipment 1"].AddComponent( "component 1", data )
> > test.equipment["equipment 1"].AddComponent( "component 2", data )
> > test.equipment["equipment 2"].AddComponent( "component 3", data )
> >
> > But it appears as though the instance of "equipment 1" has ALL of the
> > components in its components dictionary. I was hoping that the
> > test.equipment["equipment 1"].components dictionary would only have
> > those components that were assigned to "equipment 1".
> >
> > I have implemented __init__  functions for all of the classes, but all
> > they do is initialize some data that I haven't shown here.
> >
> > I think I'm trying to use a C++ way of doing this (without the new
> > operator) so if anyone would be so kind as to help with the Python way
> > of doing this sort of thing I will be eternally grateful.
> >
> > Cheers,
> >
> > Mark Shewfelt
> >
> >
> I don't see how your examples could work, helps if you post the actual code.
> Try these classes, I think they accomplish what your trying to do.
>
> class Building:
>     def __init__(self, data = ''):
>         self.data = data
>         self.equipment = {}
>     def AddEquipment(self, name, data ):
>         self.equipment[ name ] = Equipment( data )
>
> class Equipment:
>     def __init__(self, data = ''):
>         self.data = data
>         self.components = {}
>     def AddComponent(self, name, data ):
>         self.components[ name ] = Component( data )
>
> class Component:
>     def __init__(self, data):
>         self.data = data




More information about the Python-list mailing list