我正在为一个学校项目制作一个程序。它是模拟联合国。
countries = ['Australia', 'Brazil', 'Canada']
class delegate(object):
def __init__(self, country):
self.country = country
我有一个国家列表和一个名为delegate的类。因此,每个委托对象必须有一个国家/地区。通常我会这样做:
mexico = delegate('Mexico')
就是这样。但我想循环遍历国家/地区列表并为每个列表创建类实例。我的意思是:
australia = delegate('Australia')
brazil = delegate('Brazil')
canada = delegate('Canada')
等等。 我该怎么做? 非常感谢!!
答案 0 :(得分:9)
从列表中创建命名变量通常是个坏主意。也许你可以试试
countries = ['Australia', 'Brazil', 'Canada']
class Delegate(object): # according to PEP8, class names should be title-case
def __init__(self, country):
self.country = country
# create a dict
delegates = {country: Delegate(country) for country in countries}
编辑:根据@SethMMorton,Python 2.6不理解字典理解(即我上面使用的)。您可以使用
获得相同的结果delegates = dict([(country, Delegate(country)) for country in countries])
答案 1 :(得分:1)
[delegate(c) for c in countries]
答案 2 :(得分:-1)
你可以使用exec:
countries=['australia','brazil','canada']
for country in countries:
exec('%s=delegate(%s.capitalize())'%(country,country))
这将创建一个新的委托实例,并将其分配给其正确的国家/地区名称。希望这有帮助。
答案 3 :(得分:-3)
我相信你正在寻找所谓的匿名课程。这意味着您正在创建一个类而不将其分配给变量。例如:
country_delegates = []
for country in countries:
country_delegates.append(delegate(country))
这将创建一个委托对象列表,每个国家/地区对应一个。如果您想获得属于特定国家/地区的代理人,您可以编写一个搜索该列表并返回正确国家/地区的委托对象的函数。