我有一堂课,看起来像这样:
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__
之外? 最佳答案
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)