相关疑难解决方法(0)

输入提示:解决循环依赖

以下产生NameError: name 'Client' is not defined.我该如何解决?

class Server():
    def register_client(self, client: Client)
        pass


class Client():
    def __init__(self, server: Server):
        server.register_client(self)
Run Code Online (Sandbox Code Playgroud)

python type-hinting python-3.5

41
推荐指数
2
解决办法
5548
查看次数

Python中类型注释的自引用或转发引用

我试图找出类型的自引用如何与python3的类型注释一起工作 - 文档没有指定任何关于此的内容.

举个例子:

from typing import TypeVar, Optional, Generic

T = TypeVar('T')
class Node(Generic[T]):
    left = None
    right = None
    value = None

    def __init__(
        self, value: Optional[T],
        left: Optional[Node[T]]=None,
        right: Optional[Node[T]]=None,
    ) -> None:
        self.value = value
        self.left = left
        self.right = right
Run Code Online (Sandbox Code Playgroud)

此代码生成错误:

Traceback (most recent call last):
  File "node.py", line 4, in <module>
    class Node(Generic[T]):
  File "node.py", line 12, in Node
    right: Optional[Node[T]]=None,
NameError: name 'Node' is not defined
Run Code Online (Sandbox Code Playgroud)

这是使用Python 3.5.1

python typing typechecking python-3.x python-3.5

12
推荐指数
1
解决办法
5151
查看次数