2013-02-28 100 views
0

我試圖打印這些car_object[objectname]對象,但不知道如何去做。 我也有一個Cars類。當我做print(car_object[objectname])時,我得到ObjectmeA160 <__main__.Cars object at 0x027FB970>。我究竟做錯了什麼?在Python中打印對象

def __iter__(self): 
    car_object = {} 
    cursor = self._db.execute('SELECT IDENT, MAKE, MODEL, DISPLACEMENT, 
     POWER, LUXURY FROM CARS') 
    for row in cursor: 
     car_object = {} 
     objectname = 'Object'+str(row['IDENT']) 
     car_object[objectname] = Cars(ident = row['IDENT'], make = row['MAKE'], 
        model = row['MODEL'], disp = row['DISPLACEMENT'], power = row['POWER'], luxury = row['LUXURY']) 
     print(car_object[objectname]) 
     yield dict(row) 

class Cars: 
    def __init__(self, **kwargs): 
     self.variables = kwargs 

    def set_Variable(self, k, v): 
     self.variables[k] = v 

    def get_Variable(self, k): 
     return self.variables.get(k, None) 
+4

這取決於*完全*在Cars類。它有一個'.__ str __()'嗎? – 2013-02-28 21:36:10

+0

@Martijn Pieters增加了Cars類......在這種情況下,__str __()如何工作? – engr007 2013-02-28 21:39:20

+0

您是否在print()語句之前打印了其他內容? '__ main__.Cars對象在0x027FB970>'用於'Cars'類,前面的部分不是。 – 2013-02-28 21:39:54

回答

1

<__main__.Cars object at 0x027FB970>是自定義對象的標準字符串不實現自己的.__str__() hook。您可以通過實施該方法對其進行定製:

class Cars: 
    # .... 

    def __str__(self): 
     return 'Car instance with variables: {!r}'.format(self.variables) 
+0

我該如何反覆調用以打印它們全部?我得到的數據庫輸入...它有大約30some行,所以我想打印他們。我打電話給主嗎? – engr007 2013-02-28 21:46:20

+0

@ user2096860:您正在正確地將它們全部打印出來。這個鉤子爲你的對象提供了一種以不同的方式打印的方式,所以不管這個方法返回什麼,它都會打印出<__ main__.Cars對象在0x027FB970>處。 – 2013-02-28 21:48:10

+0

你很棒!非常感謝!!! – engr007 2013-02-28 21:49:58