python - 无法访问 Python 中对象内的列表

标签 python

我有一个简单的应用程序,我希望能够在其中添加按文本、句子和标记组织的文本。每个文本包含多个句子,每个句子包含多个标记。我的类(class)如下所示:

class Text:
    sentences = []

    def __init__(self, meta):
        self.meta = meta

    def getSentences(self):
        return self.sentences

    def addSentence(self, s):
        self.sentences.append(s)

class Sentence:
    tokens = []

    def __init__(self):
        pass

    def getTokens(self):
        return self.tokens

    def addToken(self, t):
        self.tokens.append(t)

class Token:
    def __init__(self, word, pos):
        self.word = word
        self.pos = pos

    def getWord(self):
        return self.word

    def getpos(self):
        return self.pos

然后我创建一个标记、一个句子和一个文本,如下所示:

token = Token("a", "b")
sent = Sentence()
sent.addToken(token)
txt = Text("meta")
txt.addSentence(sent)

现在,当我想要访问该标记时,即第一个文本的第一个句子的第一个标记,我希望能够执行如下操作:

print txt.getSentences[0].getTokens[0]

... 这根本不起作用。我可以像这样访问 getSentences 方法

 print txt.getSentences

这给了我这个

 <bound method Text.getSentences of <txt.Text instance at 0x1006d5a70>>

最佳答案

您的代码有两个问题。

首先,您将 sentencestokens 定义为类变量

>>> class Test:
...     myvar = []
... 
>>> 
>>> t1 = Test()
>>> t1.myvar.append(10)
[10]
>>> t2 = Test()
>>> print(t2.myvar)
[10]

您应该在 __init__ 中初始化这些变量

其次,在 python 中,函数是通过 () 运算符调用的,只需引用一个函数名即可返回函数对象。

>>> def myfunc():
...     print("hello,world!")
... 
>>> yourfunc = myfunc
>>> yourfunc()
hello,world!

在使用变量语句的情况下,您可以直接使用txt.sentences访问它,python中没有私有(private)/公共(public)方法的区别,但是有名称带有_ -under 和 __-dunder 前缀,但这是惯例。

关于python - 无法访问 Python 中对象内的列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34161308/

相关文章:

python - 使用 PySpark 从 map 创建全局列表的问题

python / Pandas :How does one pivot a table whereby the unique values in a specified multi -index or column form part of the resultant column name?

python - 访问 python 中的字典列表并使用值对其进行排序(嵌套字典)

python - scrapy __init__ arg 中的值错误

python - 如何在python中动态创建类变量

python - 在没有 pip 的情况下安装 lxml

python - scrapy +couchebase : middleware or pipline?如何存储和检索数据

javascript - 是否真的可以将数据(回调)从 mpld3 传递到 ipython?

python - 尝试访问同一网络上的 grpc 服务器时,grpc 客户端 dns 解析失败

python - 将 HTML 解析为纯文本