filedscr.py
来自「python的典型方法,对初学的python的人有一定的借鉴作用。」· Python 代码 · 共 43 行
PY
43 行
import pickle
class FileDscr(object):
def __init__(self, name):
self.name = name
saved = []
def __get__(self, obj, typ=None):
if self.name not in FileDscr.saved:
raise AttributeError, \
"%r used before assignment." % self.name
try:
f = open(self.name, 'r')
val = pickle.load(f)
f.close()
return val
except (pickle.UnpicklingError, IOError, EOFError, AttributeError, \
ImportError, IndexError), e:
raise AttributeError, \
"Cannot read %r: %s" % (obj, self.name)
def __set__(self, obj, val):
f = open(self.name, 'w')
try:
pickle.dump(val, f)
FileDscr.saved.append(self.name)
except (TypeError, pickle.PicklingError), e:
raise AttributeError, \
"cann't pickle %r" % self.name
finally:
f.close()
class VarClass(object):
foo = FileDscr('foo.x')
bar = FileDscr('bar.x')
vb = VarClass()
vb.foo = 'Google'
vb.foo = ('google', 76723, 'Tokusi')
print vb.foo
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?