Python 通过反向引用上下文改进状态设计模式

Python 通过反向引用上下文改进状态设计模式,python,design-patterns,import,backreference,state-pattern,Python,Design Patterns,Import,Backreference,State Pattern,首先,我想让你知道我读了不同的主题:循环导入、循环类型提示等等。据了解,我们可以注意到: 状态存储对包含它们的上下文对象的引用 我需要的正是这样的解决方案。所以我准备了两个演示文件,state.py: 从abc导入abc,abstractmethod 阶级国家(ABC): @抽象方法 def设置屏幕亮度(自身、计算机:笔记本电脑)->无: 通过 电源等级(州): def设置屏幕亮度(自身、计算机:笔记本电脑)->无: 计算机。设置最大亮度() 类别电源断开(状态): def设置屏幕亮度(自身、计

首先,我想让你知道我读了不同的主题:循环导入、循环类型提示等等。据了解,我们可以注意到:

状态存储对包含它们的上下文对象的引用

我需要的正是这样的解决方案。所以我准备了两个演示文件,state.py

从abc导入abc,abstractmethod
阶级国家(ABC):
@抽象方法
def设置屏幕亮度(自身、计算机:笔记本电脑)->无:
通过
电源等级(州):
def设置屏幕亮度(自身、计算机:笔记本电脑)->无:
计算机。设置最大亮度()
类别电源断开(状态):
def设置屏幕亮度(自身、计算机:笔记本电脑)->无:
计算机。_设置_最小_亮度()
和笔记本电脑.py:

从州导入*
笔记本电脑类:
定义初始化(自)->无:
self.state=PowerSupplyOn()
自行调整屏幕亮度()
def调整亮度屏幕(自身)->无:
self.state.set\u屏幕亮度(self)
定义设置最大亮度(自身)->无:
打印(“亮度级别:100%”)
定义设置最小亮度(自)->无:
打印(“亮度级别:15%”)
说到点子上——我卡住了。当然,我不能在state.py中导入笔记本电脑(循环导入)。另一方面,我需要类型提示。或者,我可以从方法的头中删除膝上型计算机提示(但我需要它们),或者将它们作为字符串,即“膝上型计算机”。或者,我根本不应该将引用传递回上下文(Laptop类)


如何处理此问题?

您是否绝对需要上下文参考?我不确定GoF定义是否有循环链接。有关图表以及状态更改的一些动态信息,请参见。是的,因为上下文从另一个类继承并触发独立进程中的某些对象,这些对象必须由上下文本身处理。我知道GoF定义没有循环链接,但它可以工作。