使用Python 2.5,我想創建一個臨時文件,但添加(&修改)我自己的屬性。我已經試過如下:Python:具有程序員定義屬性的文件
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
,但沒有工作,要麼。
有什麼建議嗎?
本質上,我離開發布只有幾秒鐘的確切代碼。詛咒你Martelli!然而'__slots__'在這裏很可能是不必要的,所以我會放棄這一點。 – 2010-01-22 18:22:42
非常感謝大家,特別是你,Martelli先生。你的解決方案直接爲我工作! – JaysonFix 2010-01-22 18:27:19
@Jason,yep,'__slots__'只能保存幾十個字節,可能無關緊要,因爲一個程序不太可能同時擁有這個類的大量對象。 – 2010-01-22 18:28:24