我意识到这可能被标记为重复项,但是没有其他问题与我的问题有关。我在各种函数中都有变量,需要分别调用。我收到错误function pos has no 'stn' member
我已经尝试过使用全局变量,但是这有点儿困难,并不是最简单的...
def pos():
stn = int((latest))
pos()
with open('current_data.json', 'w') as outfile:
data['data'].append({
'lineone': pos.stn,
}
)
我希望将这些变量写入json(我没有包括jso n导入和文件设置,因为它与问题无关)...但是我只收到此错误Function 'pos' has no 'stn' member; maybe 'stn_other'?
,其中stn_other
是pos
函数中的另一个变量。我会很感激的。
答案 0 :(得分:1)
尽管这通常是不好的做法,但您需要将stn
设为功能对象pos
的属性:
def pos():
pos.stn = int((latest))
否则,当pos
返回时,stn
将超出范围并被标记为垃圾回收。
答案 1 :(得分:1)
如果将值分配给函数内部的局部变量,则在函数返回时它将消失。但是您希望它继续存在。因此在我看来,您希望pos
是类的实例,而不是函数。当您执行pos.stn
时,肯定会是这样。
class Pos:
def __init__(self, latest='0'):
self.stn = int(latest)
然后,当您创建此类的实例时,
>>> pos = Pos()
数据保留在pos
内:
>>> print (pos.stn)
0
答案 2 :(得分:1)
您需要return
函数的结果pos()
。我并不是建议您编写一个将函数转换为int的函数-它只会增加可用内置函数的开销:
import json
latest = '10'
def pos(latest):
stn = int(latest)
return stn
json_data = {'data':[]} # this is something you have in advance
json_data['data'].append(pos(latest))
with open('current_data.json', 'w') as outfile:
json.dump(json_data, outfile, indent=4)
产生current_data.json
{
"data": [
10
]
}