我正在构造一个有限状态接受器(FSA ...基本上是一棵树)。我有一个FSA类和一个State类,因为FSA应该由许多States组成。但是,当最初创建FSA时,我想创建其开始的State和结束的State,并将它们连接起来。这是该代码:

class State (object):
    __slots__ = "chars","children"
    def __init__(self,chars,children=[]):
        self.chars = chars
        self.children = children

class FSA (object):
    __slots__ = "vocab"
    def __init__(self,vocab):
        self.vocab = vocab
        self.start = State("0")
        self.finish = State("1")
        self.start.children.append(self.finish)
        self.finish.children.append(self.start)


但是,当我运行fsa = FSA("vocab.small")时,将引发错误:

AttributeError: 'FSA' object has no attribute 'start'


有什么方法可以启动FSA并为其创建两个States吗?

最佳答案

你说:

__slots__ = "vocab"


你是什​​么意思?如果要具有开始属性,则需要将其包括在__slots__列表中,或者根本不使用__slots__。除非有内存问题,否则最好省略__slots__属性。

关于python - Python组合导致AttributeError,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15035279/

10-11 16:08