リファレンス見ないでやっていたら3分くらいクラスのメソッドが動かなくて悩んだ

リファレンス見ないで昨日のスクリプトをクラスで実装してみた。

"ナベアツ問題"
class nabeatsuQuestion:
    def createReader(self):
        "ナベアツ問題を読み上げる人を作る"
        def reader():
            "読み上げる人"
            def isFool(value):
                "3の倍数と3の付くときあほである"
                if value % 3 == 0:
                    return True
                if str(value).find('3') >= 0:
                    return True

            def isDog(value):
                "5の倍数で犬である"
                return value % 5 == 0

            outputValue = ''
            if isFool(reader.value):
                outputValue += 'fool!'

            if isDog(reader.value):
                outputValue += 'bow-wow!'

            if outputValue == '':
                outputValue += str(reader.value)

            print outputValue
            reader.value += 1
            return reader

        reader.value = 1
        return reader


instance = nabeatsuQuestion()

runner = instance.createReader()

for i in xrange(1,40,1):
    runner()

そうしたら、instance. createReader()のところで引数がどうのこうのって言われたので、小3分くらい悩んだ。
どうも、引数にselfを用意しておかないといけないようで。

"ナベアツ問題"
class nabeatsuQuestion:
    def createReader(self):
        "ナベアツ問題を読み上げる人を作る"
        def reader():
            "読み上げる人"
            def isFool(value):
                "3の倍数と3の付くときあほである"
                if value % 3 == 0:
                    return True
                if str(value).find('3') >= 0:
                    return True

            def isDog(value):
                "5の倍数で犬である"
                return value % 5 == 0

            outputValue = ''
            if isFool(reader.value):
                outputValue += 'fool!'

            if isDog(reader.value):
                outputValue += 'bow-wow!'

            if outputValue == '':
                outputValue += str(reader.value)

            print outputValue
            reader.value += 1
            return reader

        reader.value = 1
        return reader


instance = nabeatsuQuestion()

runner = instance.createReader()

for i in xrange(1,40,1):
    runner()

としたら動いた。
リファレンスはちゃんと読もうという教訓。

#はてな記法って便利