【问题标题】:Python Composition Causes AttributeErrorPython 组合导致 AttributeError
【发布时间】:2013-02-23 00:00:24
【问题描述】:

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

【问题讨论】:

    标签: python oop nlp


    【解决方案1】:

    你说:

    __slots__ = "vocab"
    

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

    【讨论】:

    • 知道了!这是更大任务的一部分,并且需要插槽。我没有完全理解它们,但现在我明白了。谢谢。
    • "Slots are required" :(Java 教授什么时候教 Python 本来应该写的?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-17
    • 2018-12-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多