リファレンス見ないでやっていたら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()

としたら動いた。

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

#はてな記法って便利

Share