0

cityNames = ['Detroit', 'Ann Arbor', 'Pittsburgh']
populations = [680250, 117070, 304391]
states = ['MI', 'MI', 'PA']

city_tuples = zip(cityNames, populations, states)
print(city_tuples)

class City:
  def __init__(self, n, p, s):
    self.name = n
    self.population = p
    self.state = s

  def __str__(self):
    return '{}, {}, (pop: {})'.format(self.name, self.state, self.population)

cities = []
for city_tup in city_tuples:
  name, pop, state = city_tup
  city = City(name, pop, state)
  cities.append(city)
  
print(cities)

[<main.City object at 0x7faaa3c17340>, <main.City object at 0x7faaa3c173a0>, <main.City object at 0x7faaa3c17400>]

1 Answers1

0

When using lists as print arguments, __str__ method is not the method called for printing each Object, it is __repr__ instead. See this post for reference.

You can add __repr__ method or print the Objects one by one:

...

#print(cities) replace this!!

for city in cities:
    print(city)
Crist6654
  • 11
  • 2