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-statementは、「word」が「text」に含まれているかどうかを確認します。それで、コンストラクターから変数'word'を認識しますか?

self.word.lower()コンストラクターによって初期化された単語をすべて小文字にしますか?また、「for」ループの「if」条件は、「アラート」単語の検索でアポストロフィを含む単語が除外されないようにしますか?

4

2 に答える 2

3

それで、コンストラクターから変数'word'を認識しますか?

いいえ。メソッド内で定義された変数は、そのメソッドに対してローカルであり、オブジェクト属性(などself.wordはローカル変数(など)と混同されませんword

self.word.lower()は、コンストラクターによって初期化された単語をすべて小文字にしますか?

いいえ。Pythonでは文字列は不変です。新しい文字列(小文字バージョンの。)を返しますself.word

また、「for」ループの「if」条件は、「アラート」単語の検索でアポストロフィを含む単語が除外されないようにしますか?

私には正しいようです。

于 2012-11-18T15:54:54.087 に答える
2

最初の質問:for-statementは、「word」が「text」に含まれているかどうかを確認します。それで、コンストラクターから変数'word'を認識しますか?

forステートメントwordはローカル変数であり、と同じではありませんself.worditem基本的に、必要に応じて、forループをまたは任意の変数名に置き換えることができます。

2番目の質問:self.word.lower()は、コンストラクターによって初期化された単語をすべて小文字にしますか?

いいえ、そうではありません。なぜなら、それらは2つの異なるものだからです。wordローカル変数は、リスト内の各アイテムですtext。そして、最初にオブジェクトをインスタンス化するときにオブジェクトにself.word渡す変数です。WordTrigger

于 2012-11-18T15:55:01.820 に答える