我有一堂课,看起来像这样:

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)

10-06 11:18
查看更多