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