python自己做个定时器_python 创建一个自己的类计时器
前言:
學習了python的類之后收獲頗多,于是想利用類創建一個簡單的計時器
第一代版本
首先要明確自己的timer想要實現的功能…先列一些簡單的吧
比如:開始計時的功能,停止計時的功能,有一些簡單的提示語…
還有一個問題,叫什么名字呢…
既然我們同屬地球人,那就叫EarthTimer吧,額,就叫ETimer算了
import time as t
class ETimer:
"""創建一個計時器的類"""
# 初始化一些可能會用到的變量
def __init__(self):
self.begin = 0
self.end = 0
self.lasted = 0
# 開始計時
def start(self):
self.begin = t.time()
print("計時開始...")
# 停止計時,并顯示持續時間
def stop(self):
self.end = t.time()
print("計時結束...")
self.lasted = self.end - self.begin
# 報出持續時間
print(f'持續了{self.lasted}秒')
好了,以上就是最簡單的雛形,能實現簡單的計時,報時功能,采用實例化類對象的方法調用
但是簡單的缺點也很明顯,如果改變方法的調用順序,程序就會報錯,因此,應該有相應的處理措施
第二代版本
要應對不同的情況,if語句能充分發揮作用
import time as t
class ETimer:
"""創建一個計時器的類"""
# 初始化一些可能會用到的變量
def __init__(self):
self.begin = 0
self.end = 0
self.lasted = 0
print("請調用start開始計時...")
# 開始計時
def start(self):
# 已調用過start方法
if self.begin:
print("請調用stop停止計時...")
else:
self.begin = t.time()
print("計時開始...")
# 停止計時,并顯示持續時間
def stop(self):
# 如果未先調用start方法
if self.begin == 0:
print("請調用start方法開始計時...")
else:
self.end = t.time()
print("計時結束...")
self.lasted = self.end - self.begin
# 報出持續時間
print(f'持續了{self.lasted}秒')
# 初始化變量
self.begin = 0
self.end = 0
這樣的話,提示就變得更加人性化了,也能防止用戶在一定程度的操作失誤的情況下,防止程序崩潰
但是,對于一個正常的計時器,要實現的功能遠不止于此,我不能因為自己技術的貧困而放棄對美好事物的追求。也許在計時過程中還會用到多次調用,以及調用以前的記錄,或者將幾次記錄相加,應該在代碼中加入相應的功能
魔法方法
在學習過程中,我了解到python在使用運算符還有調用某個變量時,會調用其對應的類的某種方法來實現前面的功能。
比如:python遇到 “+” 運算符時,會調用內部的__add__()方法;調用變量時,會調用內部的__repr__()方法;調用print函數時,python會調用內部的__str__()方法…這些都是python的魔法方法
我們可以重寫這些魔法方法,使其在我們創建的類中有額外的功效,也就是定制我們自己的類方法
重寫__rper__()方法,使我們在交互式python解釋器下通過直接輸入對象就可以調出相應值。(注:rper()方法的返回值必須是字符串,而且必須有返回值,如果用print()方法代替輸出,就會出現無限套娃,str()方法也是一樣)
# 重寫__rper__方法
def __repr__(self):
if self.lasted == 0:
return "沒有該條記錄..."
else:
return f"該條記錄為{self.lasted}秒"
通過重寫__add__方法,使得在調用兩次計時的記錄并把他們相加時,能得到我們想想要的結果
# 重寫__add__方法
def __add__(self, other):
if self.lasted * other.lasted == 0:
return "缺少該條記錄..."
else:
return f"總共為 {self.lasted + other.lasted} 秒"
現在,只要通過實例化方法創建對象,我們的計時器能實現相當大部分的功能
通過類似的方式,也可以向計時器添加更多的功能…
反思與感悟
在python中,一切皆對象。數字、字符串、元組、列表、字典、函數、方法、類、模塊等等都是對象,包括你的代碼。
了解python的一些魔法方法,或者重寫它們,會達到意想不到的效果,比如將加減法互換…
在學習python的過程中總能發現一些新樂趣,這些東西總能激起我學習的動力
參考資料
原文鏈接:https://blog.csdn.net/JesseGrowing/article/details/112546313
總結
以上是生活随笔為你收集整理的python自己做个定时器_python 创建一个自己的类计时器的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: c语言 正号运算符 作用,C语言中,哪些
- 下一篇: centos 8 安装使用配置