gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-04 03:22:43 25 4
gpt4 key购买 nike

我有一个简单的应用程序,我希望能够在其中添加按文本、句子和标记组织的文本。每个文本包含多个句子,每个句子包含多个标记。我的类(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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com