Python wrap实现简单的时间查看,修改器

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):
        self.__atime = time()
        return `self.__data`

    def __str__(self):
        self.__atime = time()
        return str(self.__data)

    def __getattr__(self, attr):
        self.__atime = time()
        return getattr(self.__data, attr)
<pre name="code" class="python">In [39]: timeWrappedObj = TimedWrapMe(932)

In [40]: timeWrappedObj.gettimestr('c')
Out[40]: 'Fri Dec 26 10:35:53 2014'

In [41]: timeWrappedObj.gettimestr('m')
Out[41]: 'Fri Dec 26 10:35:53 2014'

In [42]: timeWrappedObj.gettimestr('a')
Out[42]: 'Fri Dec 26 10:35:53 2014'

In [43]: timeWrappedObj
Out[43]: 932

In [44]: timeWrappedObj.gettimestr('c')
Out[44]: 'Fri Dec 26 10:35:53 2014'

In [45]: timeWrappedObj.gettimestr('m')
Out[45]: 'Fri Dec 26 10:35:53 2014'

In [46]: timeWrappedObj.gettimestr('a')
Out[46]: 'Fri Dec 26 10:35:54 2014'

In [47]:

In [47]: timeWrappedObj.set('time is up!')

In [48]: timeWrappedObj.gettimestr('m')
Out[48]: 'Fri Dec 26 10:35:54 2014'

In [49]: timeWrappedObj
Out[49]: 'time is up!'

In [50]: timeWrappedObj.gettimestr('c')
Out[50]: 'Fri Dec 26 10:35:53 2014'

In [51]: timeWrappedObj.gettimestr('m')
Out[51]: 'Fri Dec 26 10:35:54 2014'

In [52]: timeWrappedObj.gettimestr('a')
Out[52]: 'Fri Dec 26 10:35:54 2014'


 


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值