On Nov 10, 7:47 am, RyanN wrote: > Thank you both, I knew there had to be a good way of doing this. > > -Ryan
Just an update. I used dictionaries to hold objects and their names. I'm beginning to understand better. Now to apply this to my actual problem. Here's the code I ended up with: class continent(object): ''' A continent has a name and a dictionary of countries ''' def __init__(self,continent_name): self.name = continent_name self.countries = {} #countries is a dictionary of country name and object def addCountry(self,country_name,population = 0): self.countries[country_name] = country(country_name) #Create a new instance of country() and add it to dictionary self.countries[country_name].population = population #Set country population def addState(self,country_name,state_name,population = 0): if country_name in self.countries: self.countries[country_name].addState(state_name,population) else: #This state must be in a new country self.addCountry(country_name) self.addState(country_name,state_name,population) def listCountries(self): for a_country in self.countries: print a_country, "pop:",self.countries[a_country].population,", states:" self.countries[a_country].listStates() class country(object): ''' A country has a name, a population and a dictionary of states ''' def __init__(self,name): self.name = name self.population = 0 self.states = {} #states is a dictionary of state name and object def addState(self,state_name,population = 0): self.states[state_name] = state(state_name) #Create a new instance of state() and add it to dictionary self.states[state_name].population = population self.population += population #Add this state's population to the country's def listStates(self): #print self.states[:] for a_state in self.states: self.states[a_state].stateInfo() class state(object): ''' A state has a name, color, and a population ''' def __init__(self,state_name): self.name = state_name self.color = 'unknown' self.population = 0 def stateInfo(self): print " ",self.name,"pop:",self.population, "color:",self.color #Now some examples of how to set and access this information NAm = continent('NAm') #First we add our continent NAm.addCountry('canada',700) #Now add a a country to NAm NAm.addState('usa','maine',400) #We can add a state even if we haven't added the country yet NAm.addState('usa','california',2000) NAm.addState('canada','quebec',700) # I know it's actually a province NAm.addState('mexico','QR',550) usa = NAm.countries['usa'] # we can make things easier on ourselves usa.population = 5000 #short for: NAm.countries['usa'].population = 5000 usa.addState('florida') #Another way to add a state, we can set population seperately NAm.countries['usa'].states['florida'].population = 2000 for any_state in usa.states: #Set an attribute for all state objects usa.states[any_state].color = 'blue' NAm.listCountries() # Generates a report # three ways to get to print the same information print NAm.countries['usa'].states['maine'].name, NAm.countries['usa'].states['maine'].population print usa.states['maine'].name, usa.states['maine'].population # We already assigned usa to NAm.countries['usa'] maine = usa.states['maine'] print maine.name, maine.population -- http://mail.python.org/mailman/listinfo/python-list