python3类型注释和父子设计

2024-04-27 14:17:00 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在编写一些Python代码,其中必须使用这样的父子设计:

from typing import List


class Parent(object):

    def add_children(self, child: List[Child]):
        """Do something here"""


class Child(object):

    def set_parent(self, parent: Parent):
        """Do something here"""

但是Python提出了一个NameError,并抱怨没有定义Child类。这是合乎逻辑的,因为它在Parent类下。你知道吗

在C++中有类似“向前声明”之类的东西来处理这样的问题,或者有其他的方法吗?我试着用谷歌搜索,但没有成功。你知道吗


Tags: 代码fromselfchildtypinghereobjectdef
2条回答

这是一个循环依赖问题。你知道吗

当代码运行并且遇到Parent类时,它会查找Child类定义,但它是在之后定义的,因此找不到它并抛出错误!你知道吗

如果交换这两个定义,当代码运行并且遇到Child类时,它会查找Parent类定义,但它是在之后定义的,因此它找不到它并抛出错误!你知道吗

要解决这个问题,您必须在here中标识的名称中使用一个字符串,问题将得到解决

 def add_children(self, child: "List[Child]"):

可以使用字符串指定名称:

def add_children(self, child: "List[Child]"):

进一步的解释,请看this answer。你知道吗

相关问题 更多 >