未定义 Django '处理程序'

问题描述

我目前正在处理一个 Django REST 项目,并尝试在其上实施责任链模式。

自从我将 Python 版本从 3.9.2 降级到 3.6.5 以来,我遇到了另一个问题,如下所示:

 NameError: name 'Handler' is not defined

这是错误所在的代码

from abc import ABCMeta,abstractmethod
from typing import Any,Optional

class Handler(Metaclass=ABCMeta):
    """
    The Handler interface declares a method for building the chain of handlers.
    It also declares a method for executing a request.
    """

    @abstractmethod
    def set_next(self,handler: Handler) -> Handler:
        pass

    @abstractmethod
    def handle(self,request) -> Optional[str]:
        pass

我该如何解决

解决方法

这里的问题是您正在使用尚未定义的类型 Handler 来注释其方法之一。将此导入添加到文件顶部以解决此问题:

from __future__ import annotations

您将能够在 Python 3.10 及更高版本上将其删除。有关详细信息,请参阅 https://www.python.org/dev/peps/pep-0563/#implementation

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...