#!/usr/bin/env python3class Connection(object): def __init__(self): self.change_state(ClosedConnection) def change_state(self,new_state): self.__class__ = new_state def read(self): raise NotImplementedError("未实现") def write(self): raise NotImplementedError("未实现") def open(self): raise NotImplementedError("未实现") def close(self): raise NotImplementedError("未实现")class OpenedConnection(Connection): def read(self): print("read") def write(self): print("write") def open(self): raise RuntimeError("连接已经打开") def close(self): self.change_state(ClosedConnection)class ClosedConnection(Connection): def read(self): raise RuntimeError("连接没有打开") def write(self): raise RuntimeError("连接没有打开") def open(self): self.change_state(OpenedConnection) def close(self): raise RuntimeError("连接已经关闭") if __name__=="__main__": conn = Connection() conn.open() conn.write()