2017-06-13 41 views
1

我有一个类,它看起来是这样的:返回__str__结果添加到deque?

class Test: 
    def __init__(self,entry): 
     self.entry = entry 

    def __str__(self): 
     return "StringName{0}".format(self.entry) 

,我使用在特定的格式返回值。

(注:这是我要带去一类的分配,所以这是有这个类中设置了这样的要求)

现在我有必要从sqlite3的数据库进行查询。我有一个类将所有记录添加到数据库并且它可以正常工作。但是,在该类中,我需要有一个方法以查询的形式返回查询结果。

我有这个功能我试图做到这一点的:

def select_all(self): 
    dbconnect = sqlite3.connect('database.db') 
    dbcursor = dbconnect.cursor() 
    double_ended_que = collections.deque() 
    for row in dbcursor.execute('SELECT ("(" || player_name || ", " || games_played || ", "\ 
           || average || ", " || salary || ")") FROM baseball_stats'): 
     rowname = print(Test(row)) 
     double_ended_que.append(rowname) 
    dbconnect.close() 
    return double_ended_que 

如果我有rowname = print(Test(row))然后打印所有行的值,然后填充与无的双端队列。

但是,如果我摆脱打印的,只是有rowname = Test(row)然后我得到的实际类返回的数据,看起来像deque([<Test object at 0x00000156FE8F0EB8>, etc etc

有,我可以同时满足这些要求的一些其他的方式?或者我应该在Test类中创建另一个函数,该函数返回的值除了具有相同的东西的__str__之外还返回值?

+0

'deque'究竟需要什么? –

回答

3

print输出到屏幕,但它返回None,所以你不存储任何有用的东西。如果你想串起来,做:

rowname = str(Test(row)) # str delegates to __str__, or __repr__ if __str__ not defined 
# Optionally, also print: 
print(rowname) 
# Then append: 
double_ended_que.append(rowname) 
+0

感谢您的迅速响应!那为我做了。 :)我会在10分钟内让我接受。 – phroureo