首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >具有python3类传递参数的SQLObject

具有python3类传递参数的SQLObject
EN

Stack Overflow用户
提问于 2018-04-09 21:57:33
回答 1查看 45关注 0票数 1

我是python3和tring的新手,我创建了一个sqlobject类,它命名为任何东西。然后,我创建了一个函数来计算一列的平均值。这是密码的一部分。

代码语言:javascript
复制
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))

但是它返回错误:

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

但是,当我像这样直接写下代码时:

代码语言:javascript
复制
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)函数呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-04-09 22:39:22

请注意,whatever.get(i).f1可以工作-这是因为您显式地命名了该列。如果要按名称获取列,则必须:

  • 传递列的名称,即avg('f1', 5)
  • 使用getattr获取列的值。

所以固定代码是:

代码语言:javascript
复制
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: aa是什么?你是说e

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49742284

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档