如何解决从同一个 python 类中的另一个函数中的函数访问变量
我设计了一个“Graphs”类并初始化了 4 个列表来存储我从 firebase 数据库中获取的值。我创建了一个函数“fetch_values”来获取值并将它们存储在相应的列表中。那部分工作得很好。但是,当我尝试访问同一类“Graphs”内的另一个函数“store_values”中的更新列表时,出现错误“NameError: name 'fetch_values' is not defined” 这个函数store_values 应该采用这些列表并将值保存在我的文件夹中的 CSV 文件中。但是,它不起作用。 我希望我的问题很清楚,任何帮助将不胜感激!
这是我的课:
class Graphs(object):
def fetch_values():
temp=[]
mois=[]
hum=[]
DT=[]
def fetch():
LY_project=firebase.FirebaseApplication("https://ly-project-b1f1c-default-rtdb.firebaseio.com/",None)
result=LY_project.get("Values","")
#time=pd.to_datetime((result["LastIrrD"] +" "+ result["LastIrrT"]),infer_datetime_format=True)
now=dt.datetime.now().strftime("%H:%M:%S")
temp.append(result["Temperature"])
mois.append(result["Moisture"])
hum.append(result["Humidity"])
DT.append(now)
#DT.append(time)
#print(time)
print(len(DT))
print(result)
#-------------------------------------------Start Fetch-------------------------------------------#
print ("Fetching Values...\n")
n=5 #Number of readings
interval=2 #Interval between readings
safety=n # Safely space added to avoid overwriting of values
rt = RepeatedTimer(interval,fetch) # it auto-starts,no need of rt.start()
try:
sleep(n*interval+safety) # your long-running job goes here...
finally:
rt.stop() # try/finally block to make sure the program ends!
print("\nValues fetched successfully.")
return temp,mois,hum,DT
#----------------------------------------------------------------Store the fetched values---------------------------------------------------------------------#
def store_values():
new_DT,new_temp,new_hum,new_mois=fetch_values()
#Save data to csv file
fields = ['Date-Time','Soil Moisture','Temperature','Humidity']
rows = [new_DT,new_mois,new_hum]
dict = {'Date-Time': new_DT,'Soil Moisture': new_mois,'Temperature': new_temp,"Humidity": new_hum}
df = pd.DataFrame(dict)
display(df)
#df.to_csv("readings4.csv")
“start fetch 下的代码工作正常,我能够获取列表中的值。但是,当我在下面的函数 (store_values) 中调用这些列表时,我收到一个错误。”
请帮忙!
这是我得到的错误: enter image description here
解决方法
您应该向类函数中的所有列表添加 self
关键字。下面是一个例子:
class Dog:
tricks = []
def add_trick(self,trick):
self.tricks.append(trick)
它已经足够工作了,但是一个类的正确实现应该是这样的:
class Dog:
def __init__(self,name):
self.name = name
self.tricks = []
def add_trick(self,trick):
self.tricks.append(trick)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。