[英]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.