2017-06-13 61 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