2011-08-16 7 views
1

私はカスタムクラスを持っていますが、これにはいくつかの文字列データがあります。ファイルハンドルの書き込みオブジェクトを使用して、この文字列データをファイルに保存したいと考えています。私は__str__()を実装しているので、私はstr(myobject)を行うことができます、私のオブジェクトを文字バッファオブジェクトにするためにPythonを作るための同等のメソッドは何ですか?オブジェクトを「文字バッファオブジェクト」にする

+0

「fileObject.write(str(myobject))」のような何らかの理由がありますか? –

+0

「文字バッファオブジェクト」の意味がわかりません。 Pythonがあなたのオブジェクトをファイルオブジェクトとして扱うようにしたいのですか? http://docs.python.org/library/stdtypes.html#file-objects – dpitch40

+0

この種類のオブジェクトを書き込むのは一般的な使用例であり、冗長であるようです。 @ dpitch40 - TypeError:open( 'filename.ext'、 'w')を実行しているときに文字バッファオブジェクトが予想されました – Matt

答えて

0

ライブラリコードでオブジェクトを使用しようとすると、ファイルに与える内容を書き込めると期待している場合は、fileのように動作する「ダックファイル」クラスを実装する必要があります。あなたのstringableオブジェクトをサポートします。残念なことに、fileは、Python 2.6以上で簡単にサブクラス化できるタイプではありません。ライブラリコードを期待どおりに動作させるには、ファイルプロトコル(writewritelinestellなど)を十分に実装する必要があります。

+0

ありがとう、str()はそれほど悪くないです。 – Matt

0

あり、単一の機能ではありませんが、それらの全範囲 -

は、なぜあなたはすでに文字列バッファである、StringIO.StringIOをサブクラス化していないなど、readseek

+0

私の質問に不満を抱いているかもしれませんが、私はカスタムオブジェクトを標準ファイル、標準のファイルハンドラを使用します。 – Matt

+0

それから実際にサブクラス化したいのは 'file'です。それは奇妙な考えですが、あなたは本当に「ファイル」を持っていると確信していますか? – SingleNegationElimination

関連する問題