ジェネレータとクラスでロガーっぽいのを書き比べる

Python
2013-11-18 02:41 (12 years ago)
ジェネレータとクラスでロガーっぽいのを書き比べる

ロガーっぽいクラスを書きたくて、「ジェネレータとクラス、どちらで書いたほうが読みやすいだろう?」と思ったので書き比べ。

ジェネレータ

def logger(output_file):
    with open(output_file, 'w') as fp:
        while True:
            text = (yield None)
            fp.write(text+ '\n')
            print value

l = logger('test-python.log') l.next() l.send('The quick') l.send('Brown fox') l.send('Jumps over') l.send('The lazy dog.')

クラス

class Logger(object):
    def __init__(self, output_file):
        self.fp = open(output_file, 'w')
def write(self, text):
    self.fp.write(text + '\n')
    print text

def close(self):
    self.fp.close()

l = Logger('test-python.log') l.write('The quick') l.write('Brown fox') l.write('Jumps over') l.write('The lazy dog.') l.close()

出力結果

The quick
Brown fox
Jumps over
The lazy dog.

まあ、クラスだよね。

まだ評価がありません
著者は、アプリケーション開発会社 Cyberneura を運営しています。
開発相談をお待ちしています。

アーカイブ