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 + -
显示快捷键?