gpt4 book ai didi

python - 在类中的函数之间传递变量

转载 作者:行者123 更新时间:2023-11-30 23:04:57 25 4
gpt4 key购买 nike

尝试拆分并标记一首诗(在本例中为俳句),这更像是一种自学如何使用 nltk 和类的方法。当我运行下面的代码时,我收到一个名称错误:名称'psplit'未定义,即使(我的想法是)当我从 split 函数返回它时它已经定义了。谁能帮我弄清楚这里到底出了什么问题?

import nltk

poem = "In the cicada's cry\nNo sign can foretell\nHow soon it must die"

class Intro():
def __init__(self, poem):
self.__poem = poem

def split(self):
psplit = (poem.split('\n'))
psplit = str(psplit)
return psplit

def tokenizer(self):
t = nltk.tokenize(psplit)
return t

i = Intro(poem)
print(i.split())
print(i.tokenizer())

最佳答案

您的代码中存在一些问题:

split方法中,您必须使用self.__poem来访问类的poem属性 - 正如您在构造函数中所做的那样。

split 方法中的 psplit 变量只是一个局部变量,因此您只能在此方法中使用它,而不能在其他地方使用它。如果您想让变量在 tokenize 方法中可用,您必须将其作为参数传递或将其存储为附加属性:

...
def tokenizer(self, psplit):
t = nltk.tokenize(psplit)
return t
...

psplit = i.split()
print(i.tokenizer(psplit))

或者:

def __init__(self, poem):
...
self._psplit = None

...
def split(self):
self._psplit = (poem.split('\n'))
self._psplit = str(psplit)

def tokenizer(self):
t = nltk.tokenize(self._psplit)
return t

...
i.split()
print(i.tokenizer())

此外,请确保您的缩进正确。

关于python - 在类中的函数之间传递变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33421610/

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