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自定义时钟类、定时任务类-创新互联
当前地址:https://www.cdcxhl.com/article32/dddopc.html

成都网站建设公司_创新互联,为您提供域名注册网站制作移动网站建设品牌网站建设手机网站建设微信小程序

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联

成都定制网站建设