python状态模式实现状态切换

Posted gjinwei

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python状态模式实现状态切换相关的知识,希望对你有一定的参考价值。

# -*- coding:UTF-8 -*-
import abc


class State(metaclass=abc.ABCMeta):
    @abc.abstractmethod
    def handle(self, context):
        pass


class ConcreteStateA(State):
    def handle(self, context):
        context.state = ConcreteStateB()


class ConcreteStateB(State):
    def handle(self, context):
        context.state = ConcreteStateA()


class Context:
    def __init__(self, state):
        self.__state = state

    @property
    def state(self):
        return self.__state

    @state.setter
    def state(self, value):
        self.__state = value
        print("当前状态:%s" % self.__state.__class__.__name__)

    def request(self):
        self.__state.handle(self)


if __name__ == "__main__":
    c = Context(ConcreteStateA())
    c.request()
    c.request()
    c.request()
    c.request()
    c.request()

 

以上是关于python状态模式实现状态切换的主要内容,如果未能解决你的问题,请参考以下文章

尝试使用片段保存夜间模式状态

使用 BottomNavigationView 在它们之间切换时保留片段状态

设计模式之状态模式20170712

python 协程

状态模式State

HA模式手动切换namenode状态