在 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())

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