如何从列表 Python 创建 class 实例

How can I create a class instance from a list Python

我正在为学校项目制作程序。这是一个模拟联合国。

countries = ['Australia', 'Brazil', 'Canada']

class delegate(object):
   def __init__(self, country):
     self.country = country

我有一个国家列表和一个 class 代表。因此,每个委托对象都必须有一个国家。通常我会这样做:

mexico = delegate('Mexico')

就是这样。但我想遍历国家列表并为每个创建 class 个实例。我的意思是:

australia = delegate('Australia')
brazil = delegate('Brazil')
canada = delegate('Canada')

等等。 我该怎么做? 非常感谢!!

[delegate(c) for c in countries]

从列表创建命名变量通常不是一个好主意。也许你可以试试

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])

我相信您正在寻找所谓的匿名 class。这意味着您正在制作 class 而不将其分配给变量。例如:

country_delegates = []
for country in countries:
    country_delegates.append(delegate(country))

这将创建一个委托对象列表,每个国家一个。如果您想获得属于特定国家/地区的代表,您可以编写一个函数来搜索该列表和 returns 正确国家/地区的代表对象。

你可以使用 exec:

countries=['australia','brazil','canada']
for country in countries:
    exec('%s=delegate(%s.capitalize())'%(country,country)) 

这将创建一个新的委托实例,并将分配给其正确的国家/地区名称。希望这有帮助。