答案 0 :(得分:4)
同样,在我之前的回答中,我会将对象放在dictionary中。在命名空间中创建它们的优势在于它们更易于维护。即如果你像你说的那样创建它们,你仍然需要知道它们,可能是通过记住列表中存储的引用(或者字典?)。如果您想依赖名称列表,那么您的代码将包含try
个语句。
答案 1 :(得分:1)
基本上,您需要创建某种容器类的实例,并将其存储在Map
类实例的属性中(即self.cities
)。
理想情况下,此容器的类型应该适合于Map
中的城市集合将如何使用和/或操纵。例如,是否会频繁添加,删除或更改成员?它们是否会经常迭代,是否需要按特定顺序保存或按需重新排序?
根据您对此类问题的回答,Python提供了许多内置的高性能数据类型,例如列表,词典和集合,这些类型可能是合适的。它还允许您在必要时创建自己的容器类。
答案 2 :(得分:0)
我会做这样的事情:
class Map(object):
CITIES = { "america": ["Boston", "Chicago", "Denver"], "germany": ["Munich" , ...], ...}
def __init__(self, country):
self.cities = []
for city_name in Map.CITIES[country].values():
self.cities.append(City(city_name))