如何从列表 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))
这将创建一个新的委托实例,并将分配给其正确的国家/地区名称。希望这有帮助。
我正在为学校项目制作程序。这是一个模拟联合国。
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))
这将创建一个新的委托实例,并将分配给其正确的国家/地区名称。希望这有帮助。