3

したがって、私のクラスが以下のようになり、関連するすべてのインポートが既に行われているとしましょう:

class LargeRequest(server.Request):
    memory_limit = 1024*1024*25
    temp_type = tempfile.TemporaryFile

    def parse_multipart(self, fp, pdict):
        while loop_condition:
            if self.temp_type.__name__ == 'SpooledTemporaryFile':
                data = self.temp_type(max_size=self.memory_limit)
            else:
                data = self.temp_type()
            ...
            data.write('stuff')

これを実行すると、エラーが発生します。

  File "/home/user/workspace/twisted/server.py", line 226, in parse_multipart
    data = self.temp_type()
  File "/usr/lib/python2.7/tempfile.py", line 484, in TemporaryFile
    if 'b' in mode:
exceptions.TypeError: argument of type 'instance' is not iterable

tempfile.py のこの行を参照します。

また、単純に次のようにすると、このエラーは発生しません。

data = tempfile.TemporaryFile()

でももう少し柔軟に対応してほしい。私は何を間違っていますか?

4

1 に答える 1

2

temp_typeインスタンスメソッドになります。self.temp_type()通話になるTemporaryFile(self)

以下を試してください:

temp_type = staticmethod(tempfile.TemporaryFile)
于 2013-07-04T17:36:51.363 に答える