簡體   English   中英

帶有SQLObject類傳遞參數的python3

[英]python3 with SQLObject class pass parameters

我是python3的新手,正在嘗試構建一個名為sqlobject的類。 然后,我創建了一個計算一欄平均值的函數。 這是部分代碼。

class whatever(sqlobject.SQLObject):
    _connection = connection
    f1 = sqlobject.FloatCol()
    f2 = sqlobject.FloatCol()
    wid=sqlobject.IntCol(default=None)


def avg(col, num):
    l1 = []
    for i in range(1,num):
        e = whatever.get(i).col
        l1.append(a)
    return statistics.mean(l1)



print (avg(f1, 5))

但它返回錯誤:

Traceback (most recent call last):
  File "test1.py", line 58, in <module>
    print (avg(f1, 5))
NameError: name 'f1' is not defined

但是,當我直接寫下這樣的代碼時:

class whatever(sqlobject.SQLObject):
    _connection = connection
    f1 = sqlobject.FloatCol()
    f2 = sqlobject.FloatCol()
    wid=sqlobject.IntCol(default=None)

l1 = []
for i in range(1,5):
    e = whatever.get(i).f1
    l1.append(e)
print (statistics.mean(l1))

工作正常。 那么我應該如何使用def avg(col, num)函數?

請注意, whatever.get(i).f1可以正常工作-這是因為您明確命名了該列。 如果要按名稱獲取列,則必須:

  • 通過柱,即名稱 avg('f1', 5) ;
  • 使用getattr獲取列的值。

因此,固定代碼為:

def avg(col, num):
    l1 = []
    for i in range(1, num):
        e = getattr(whatever.get(i), col)
        l1.append(a)
    return statistics.mean(l1)

print(avg('f1', 5))

PS。 您的代碼中的下一個錯誤將是NameError: a 什么是a 你是說e嗎?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM