python自定义时钟类、定时任务类-创新互联
这是我使用python写的第一个类(也算是学习面向对象语言以来正式写的第一个解耦的类),记录下改进的过程。
目前成都创新互联已为上千余家的企业提供了网站建设、域名、雅安服务器托管、绵阳服务器托管、企业网站设计、景谷网站维护等服务,公司将坚持客户导向、应用为本的策略,正道将秉承"和谐、参与、激情"的文化,与客户和合作伙伴齐心协力一起成长,共同发展。分析需求
最初,因为使用time模块显示日期时,每次都要设置时间字符串的格式,挺麻烦,但还是忍了。
后来,在处理多线程任务时需要实现定时控制的功能,更麻烦,终于决定自己做一个解决这些问题的通用代码(虽然网上有现成的模块,但亲手编写这部分代码正好能锻炼一下我的面向对象编程)。
分析框架
刚开始,我计划做一个模仿时钟的抽象类,让它独立运行在一个线程中,让它提供显示日期、计时、设置定时任务的方法……然而由于缺乏规划,编程乱糟糟的,这些方法的代码和变量交杂在一起,难以入目,更难以扩展……气得重构代码,这次把显示日期、计时、设置定时任务三大功能分别抽象成三个类,相互解耦,各自独立运行,代码变得简洁多了。
ok,旧代码就藏在git的历史记录里吧,这里贴出重构后的代码。
显示时间的类
import time import threading class _Clock: """ 自定义的时钟类,用于获取几种不同格式的当前时间。 decimal : 设置time_float的精度,控制其保留几位小数。 time_diff : 设置该时钟与UTC+0时区的时差。如果不设置,会自动采用 本地时区。 """ def __init__(self, name=None, decimal=3, time_diff=None): self.name = name self.decimal = decimal self.time_diff = time_diff self.time_format = "%Y/%m/%d %H:%M:%S" # 时间字符串的格式 @property def time_float(self): """ UTC+0时区的时间戳,精度由self.decimal决定 """ return round(time.time(), self.decimal) @property def time_int(self): """ UTC+0时区的时间戳,精度为秒 """ return int(time.time()) @property def time_tuple(self): """ 本地时区的时间元组 """ if self.time_diff == None: return time.localtime(self.time_int) else: return time.gmtime(self.time_int+self.time_diff) @property def time_str(self): """ 本地时间的格式化字符串 """ return time.strftime(self.time_format, self.time_tuple)
另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。
网页名称:python自定义时钟类、定时任务类-创新互联
浏览地址:http://scyanting.com/article/dddopc.html