from abc import ABCMeta, abstractmethod
from time import sleep
class Window(metaclass=ABCMeta):
"""定义抽象的原子操作 / 钩子操作,需要在子类实现"""
@abstractmethod
def start(self):
pass
@abstractmethod
def repaint(self):
pass
@abstractmethod
def stop(self):
pass
def run(self):
"""模板方法 (运行逻辑不用重写)"""
self.start()
while True:
try:
self.repaint()
sleep(1)
except KeyboardInterrupt:
break
self.stop()
class MyWindow(Window):
def __init__(self, msg):
self.msg = msg
def start(self):
print('窗口开始运行')
def stop(self):
print('窗口结束运行')
def repaint(self):
print(self.msg)
MyWindow('Hello...').run()