Python 3.5 class 个变量

Python 3.5 class variables

我是 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])

我只是想通过使用 class 和方法在 python 中创建一个伪 FSM。我只需要创建一个全局布尔。我真的不明白我做错了什么。如果有人不介意给我一些清晰度,我将不胜感激。谢谢

澄清一下,我在 buy_in 方法的 if 语句中遇到了 NameError。

尝试:

class State():

    started = False

    def waiting(self):
        if self.started == False:
            self.started = True
        return

    def buy_in(self, col):
        if self.started == False:
            return
        else:
            print(col)

因为 started 是一个 class 变量,你需要在调用它时使用 self.。它不是全局变量,因此您不需要全局调用。 class 中的每个方法也需要 self 作为参数。