#!/usr/bin/env python
from time import time, ctime
class TimedWrapMe(object):
def __init__(self, obj):
self.__data = obj
self.__ctime = self.__mtime = self.__atime = time()
def get(self):
self.__atime = time()
return self.__data
def gettimeval(self, t_type):
if not isinstance(t_type, str) or t_type[0] not in 'cma':
raise TypeError, "argument of 'c', 'm', or 'a' req'd"
return getattr(self, '_%s__%stime' % (self.__class__.__name__, t_type[0]))
def gettimestr(self, t_type):
return ctime(self.gettimeval(t_type))
def set(self, obj):
self.__data = obj
self.__mtime = self.__atime = time()
def __repr__(self): # repr()
self.__atime = time()
return 'self.__data'
def __str__(self): # str()
self.__atime = time()
return str(self.__data)
def __getattr__(self, attr): # delegate
self.__atime = time()
return getattr(self.__data, attr)
t = TimedWrapMe(932)
print t.gettimestr('c')
print t.gettimestr('m')
print t.gettimestr('a')
print t
print t.gettimestr('c')
print t.gettimestr('m')
print t.gettimestr('a')
t.set('time is up!')
print t.gettimestr('m')
print t
print t.gettimestr('c')
print t.gettimestr('m')
print t.gettimestr('a')
|