3

我正在努力理解属于更大问题集的一段代码。代码如下(注意WordTrigger是 的子类Trigger):

class WordTrigger(Trigger):

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

    def isWordin(self, text):
        text = [a.strip(string.punctuation).lower() for a in text.split(" ")]
        for word in text:
            if self.word.lower() in word.split("'"):
                return True
            return False

所以第 5 行完成了去除标点符号文本并将其变为小写的工作。这string.split(" ")方法创建文本中所有单词的列表,将它们拆分并在其间插入空格。for 语句检查“单词”是否在“文本”中。那么它是否从构造函数中识别出变量“单词”?

是否self.word.lower()使构造函数初始化的单词全部小写?'for'循环中的'if'条件是否确保搜索'alert'单词不会排除带有撇号的单词?

4

2 回答 2

3

那么它是否从构造函数中识别出变量“单词”?

不。在方法中定义的变量是该方法的本地变量,并且对象属性(如self.word不会与局部变量(如 )混淆word)。

self.word.lower() 是否使构造函数初始化的单词全部小写?

不,字符串在 Python 中是不可变的。它返回一个新字符串——一个小写版本的self.word.

'for'循环中的'if'条件是否确保搜索'alert'单词不会排除带有撇号的单词?

对我来说似乎是对的。

于 2012-11-18T15:54:54.087 回答
2

第一个问题:for 语句检查“单词”是否在“文本”中。那么它是否从构造函数中识别出变量“单词”?

for 语句word是一个局部变量,与self.word. item如果您愿意,您基本上可以用或任何变量名称替换该 for 循环。

第二个问题: self.word.lower() 是否使构造函数初始化的单词全部小写?

不,不是因为它们是两个不同的东西。word局部变量是列表中的每一项text。并且是您第一次实例化对象时self.word传递给对象的变量。WordTrigger

于 2012-11-18T15:55:01.820 回答