需要创建类变量,它是该类的子类,如何管理引用

问题描述 投票:0回答:1

请考虑以下代码作为问题示例。

class State:
    START: State = StartState()    # Problem Here - StartState
    END: State = EndState()        # Problem Here - EndState

    @classmethod
    def get_current(cls, context: Context) -> "State":
        if context.just_beginning :
            return cls.START
        return cls.END

class StartState(State):
    ...

class EndState(State):
    ...

由于 StartState 和 EndStart 未定义,代码无法运行。

但是,我无法将 StartStateEndState 移动到 State 之上,因为 State 没有定义。

请指导我在 Python 中执行此操作。

python design-patterns
1个回答
0
投票

也许对您的问题进行一些解释可能会有所帮助。但这里有一个代码片段可以帮助您:

class State:
    START: "State"
    END: "State"

    @classmethod
    def get_current(cls, context: "Context") -> "State":
        if context.just_beginning:
            return cls.START
        return cls.END

class StartState(State):
    ...

class EndState(State):
    ...

State.START = StartState()
State.END = EndState()

您可以首先在类中声明 State.START 和 State.END 类型..然后一旦您的类结束,您可以通过调用 StartState() 和 EndState() 函数来初始化值

© www.soinside.com 2019 - 2024. All rights reserved.