在 class 中的函数之间传递变量
Passing variables between functions in a class
尝试拆分和标记一首诗(或本例中的俳句),这更像是一种自学如何使用 nltk 和 类 的方法。当我 运行 下面的代码时,我得到一个 Name Error: name 'psplit' is not defined
,尽管(我的想法是)它是在我从 split 函数 return 时定义的。谁能帮我弄清楚这里到底出了什么问题?
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
来访问 class 的 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())
此外,请确保您的缩进是正确的。
尝试拆分和标记一首诗(或本例中的俳句),这更像是一种自学如何使用 nltk 和 类 的方法。当我 运行 下面的代码时,我得到一个 Name Error: name 'psplit' is not defined
,尽管(我的想法是)它是在我从 split 函数 return 时定义的。谁能帮我弄清楚这里到底出了什么问题?
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
来访问 class 的 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())
此外,请确保您的缩进是正确的。