2017-08-14 230 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