Python组合导致AttributeError

时间:2013-02-23 00:00:24

标签: python oop nlp

我正在构建一个有限状态接受器(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

1 个答案:

答案 0 :(得分:4)

你说:

__slots__ = "vocab"

你的意思是什么意思?如果您想要一个开始属性,则需要将其包含在__slots__列表中,或者根本不使用__slots__。除非您遇到内存问题,否则最好省略__slots__属性。