Используя Python 2.5, я хотел бы создать временный файл, но добавить (и изменить) свои собственные атрибуты. Я пробовал следующее:
class TempFileWithAttributes ( ) :
__slots__ = [ '_tempFile' , 'Value' ]
def __init__ ( self ) :
self._tempFile = tempfile.TemporaryFile()
object.__setattr__ ( self, '_tempFile', tempfile.TemporaryFile() )
object.__setattr__ ( self, 'Value', 123 )
def __getattr__ ( self, name ) :
if name == 'Value' :
object.__getattr__ ( self, 'Value' )
elif name == '_tempFile' :
return getattr ( self._tempFile, name )
def __setattr__ ( self, name, newValue ) :
if name == 'Value' :
object.__setattr__ ( self, 'Value', newValue )
elif name == '_tempFile' :
setattr ( self._tempFile, newValue )
myFile = TempFileWithAttributes ( )
myFile.write ( 'Hello, Jayson!' )
print myFile.Value
myFile.Value = 456
print myFile.Value
myFile.seek ( 0, os.SEEK_END )
print myFile.tell()
Однако меня приветствуют следующие сообщения об ошибках:
object.__setattr__ ( self, '_tempFile', tempfile.TemporaryFile() )
TypeError: can't apply this __setattr__ to instance object
Я также пытался создать подкласс file
, но он тоже не работал.
Есть предложения?