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

Python
2013-11-18 11:41 (10年前) ytyng

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

ジェネレータ

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.

まあ、クラスだよね。

現在未評価

コメント

アーカイブ

2024
2023
2022
2021
2020
2019
2018
2017
2016
2015
2014
2013
2012
2011