【发布时间】:2016-11-07 23:38:27
【问题描述】:
我是 python 新手,我在 Ubuntu 上使用 python 3.5。我对这个问题进行了一些研究,并找到了很多答案。我正在做的事情看起来就像每个人都说我应该做的那样,但我仍然收到错误。
import csv
import sys
Class State():
started = False
def waiting(self):
self.started
if self.started == False:
self.started = True
return
def buy_in(self, col):
if self.started == False:
return
else:
print(col)
def read_file(file):
csv_list = csv.reader(file)
header = True
for row in csv_list:
if header:
header = False
continue
col = float(row[5])
if col < 0 :
State.waiting()
if col >= 0:
State.buy_in(col)
file.close()
def main(filename):
file = open(filename)
read_file(file)
def __name__ == '__main__':
main(sys.argv[1])
我只是想通过使用类和方法在 python 中创建一个伪 FSM。我只需要创建一个全局布尔值。我真的不明白我做错了什么。如果有人不介意给我一些说明,我将不胜感激。谢谢
为了澄清,我在 buy_in 方法的 if 语句中得到 NameError。
【问题讨论】:
-
如果您想将其用作类变量,请在方法中的
started前面添加self.。 -
全局变量通常在类之外声明。
started设置为类变量。 -
好吧,在这种情况下,我可以使用类变量。我将对变量的调用更改为
self.started,但仍然收到NameError。说自己的名字没有定义。 -
尝试取出
global started -
这就是我刚刚做的,我删除了 global 关键字,并将每个实例都更改为
self.started除了初始声明。我不确定这是否完全正确。我不知道为什么它说 self 没有在 buy_in 方法中定义。
标签: python-3.x class-variables