我正在研究一个实验室测试软件 - 我处于骨干阶段,而我只是想测试紧急停止是否会在它太远之前识别出故障。
以下是代码:
import sys
def main(argv):
currentTempAverage = 0;
testingPlaced = False
typeOfTesting = False
issue="False"
class labTesting(object):
def __init__(self,currentCondition,emergencyStop=0):
self.output = labLog()
Conditions = []
self.status = "OPEN"
self.beginningCondition = currentCondition
self.EndingCondition = ""
self.output.log("Testing opened")
if float(currentCondition) > float(self.beginningCondition*1.003):
issue="True"
if (issue=="True") and float(currentCondition) < float(beginningCondition*1.002):
self.output.log("YIKES!")
self.status="CLOSED"
if (emergencyStop):
self.emergencyStop = currentCondition - emergencyStop
self.output.log("stop loss")
def close(self,currentCondition):
if currentCondition > (self.beginningCondition * 1.012717049):
self.status = "CLOSED"
self.EndingCondition = currentCondition
def tick(self, currentCondition):
def showTesting(self):
testingStatus = "Entry Condition: "+str(self.beginningCondition)
self.output.log(testingStatus)
基本上,它是检查级别,如果级别达到某一点 - issue = true,因为它可能会成为一个问题。
如果等级变低,则执行紧急停止。根据我的方式,它会引发错误。
Traceback (most recent call last):
File "/home/DDesm/Desktop/w/labtest/testing.py", line 18, in tick
if (issue=="True") and float(currentPrice) < float(entryPrice*1.002):
UnboundLocalError: local variable 'issue' referenced before assignment
谢谢!
答案 0 :(得分:0)
你在main
内有什么,你可能只想在程序的顶部运行。即使您运行main
,这些变量也只会在本地实例化。因此,issue
只能被实例化(以及在
if float(currentCondition) > float(self.beginningCondition*1.003):
issue="True"
顺便说一句,Python确实有布尔值。您可以issue = True
,然后if语句可以简化为if issue ...
。
答案 1 :(得分:0)
错误说明了这一点,您在分配之前引用了issue
。
细分:
然而,在main
您定义的问题中,比较发生在类的__init__
方法中。在__init__
方法的范围内,未定义问题。您可以将issue
传递给__init__
方法,如下所示:
def __init__(self,currentCondition,issue,emergencyStop=0):