用字符串方法理解代码

时间:2012-11-18 15:40:04

标签: python string class methods

我正在努力理解一段代码,这是一个更大问题集的一部分。代码如下(注意WordTriggerTrigger)的子类:

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语句检查'word'是否在'text'中。那么它是否从构造函数中识别变量'word'?

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

2 个答案:

答案 0 :(得分:3)

  

那么它是否从构造函数中识别变量'word'?

没有。方法中定义的变量是该方法的局部变量,而对象属性(如self.word)不会与局部变量混淆(如word)。

  

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

没有。字符串在Python中是不可变的。它返回一个新字符串 - self.word的低版本。

  

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

似乎对我而言。

答案 1 :(得分:2)

第1个问题:for-statement检查' word'是在'文本'。那么它是否识别变量' word'来自构造函数?

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

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

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