2013-02-28 105 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