同步操作将从 mirrors_PacktPublishing/Clean-Code-in-Python 强制同步,此操作会覆盖自 Fork 仓库以来所做的任何修改,且无法恢复!!!
确定后同步将在后台操作,完成时将刷新页面,请耐心等待。
"""Clean Code in Python - Chapter 9: Common Design Patterns> State"""import abcfrom log import loggerclass InvalidTransitionError(Exception):"""Raised when trying to move to a target state from an unreachable sourcestate."""class MergeRequestState(abc.ABC):def __init__(self, merge_request):self._merge_request = merge_request@abc.abstractmethoddef open(self):...@abc.abstractmethoddef close(self):...@abc.abstractmethoddef merge(self):...def __str__(self):return self.__class__.__name__class Open(MergeRequestState):def open(self):self._merge_request.approvals = 0def close(self):self._merge_request.approvals = 0self._merge_request.state = Closeddef merge(self):logger.info("merging %s", self._merge_request)logger.info("deleting branch %s", self._merge_request.source_branch)self._merge_request.state = Mergedclass Closed(MergeRequestState):def open(self):logger.info("reopening closed merge request %s", self._merge_request)self._merge_request.state = Opendef close(self):"""Current state."""def merge(self):raise InvalidTransitionError("can't merge a closed request")class Merged(MergeRequestState):def open(self):raise InvalidTransitionError("already merged request")def close(self):raise InvalidTransitionError("already merged request")def merge(self):"""Current state."""class MergeRequest:def __init__(self, source_branch: str, target_branch: str) -> None:self.source_branch = source_branchself.target_branch = target_branchself._state = Noneself.approvals = 0self.state = Open@propertydef state(self):return self._state@state.setterdef state(self, new_state_cls):self._state = new_state_cls(self)def open(self):return self.state.open()def close(self):return self.state.close()def merge(self):return self.state.merge()def __str__(self):return f"{self.target_branch}:{self.source_branch}"
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。