2017-08-14 238 views
-1

我想一次创建具有不同名称的多个对象。Python3,一次创建一个类的多个对象

例如

class Car: 
    def __init__(self, color): 
     self.color = color 

,我需要创建n个对象当程序第一次运行

car_1 = Car("blue") 
car_2 = Car("Red") 
#... 
car_n = Car("color_n") 

有没有办法在python3做到这一点?我尝试过的所有事情只是创建一个对象并更改其名称或overwhite对象信息o只是在运行时失败。我不能使用EXEC()或eval()函数

感谢

附加: 之前我需要的东西,因为我需要存储n客户的信息,每当我运行程序与它的工作(这些信息是存储在.csv文件中)。 我需要做我之前提到的事情还是有另一种方法来处理这种数据管理?

+1

可能的重复[如何创建可变数量的变量?](https://stackoverflow.com/questions/1373164/how-do-i-cr eate-a-variable-number-of-variables) – jonrsharpe

+4

不要这样做。使用诸如'list'或'dict'这样的数据结构来保存对象。试图动态地创建变量是需要麻烦和头痛的。 –

+0

使用for循环和列表。 –

回答

0

您可以创建汽车对象的列表,按照列表理解

class Car: 
    def __init__(self, color): 
     self.color = color 
    def __repr__(self): 
     return '{}({!r})'.format(self.__class__.__name__, self.color) 

colors=['red', 'blue', 'green',] 
cars_objects = [Car(color) for color in colors] 
print(cars_objects) 

回报

[Car('red'), Car('blue'), Car('green')] 

__repr__在汽车类函数创建Car对象的“更具可读性”(与解析的)表示而不是“<__main__.Car object at 0x7f5b38a2c400>

+1

考虑让'repr'版本可解析;例如''{}({!r})'.format(self .__ class __.__ name__,self.color)'。这将显示例如'汽车( '红')'。在复制调试值等时使其更加轻松。 从'__repr__'文档:[如果可能的话,这应该看起来像一个有效的Python表达式,可用于重新创建具有相同值的对象(在给定的环境下)。](https://docs.python .org/3/reference/datamodel.html#object .__ repr__) –

+0

@YannVernier对于这种情况你绝对正确。我编辑了我的答案。现在__repr__返回的值可用于重新创建Car对象。 – alvarez