相同类的方法参数类型

11 浏览
0 Comments

相同类的方法参数类型

我想要像这样设置参数的类型:\n

class Tree:
    def __init__(self):
        self.list_of_nodes=[]
    def insert_node (self, node: Tree):
        self.list_of_nodes.append(node)

\n当我尝试这样做时,出现了错误:NameError: name \'Tree\' is not defined

0
0 Comments

在同一个类中,当在方法参数中引用同一类时,必须将类型放在引号中。否则,会导致一个错误。

出现这个问题的原因是因为在Python中,当类型注释引用同一类时,解释器会尝试在当前作用域中找到该类型。如果找不到,解释器将会报错。

解决这个问题的方法是在引用同一类的类型注释中,将类型放在引号中。这样,解释器就不会尝试去查找该类型,而是直接将其作为字符串处理。

以下是一个示例代码,演示了问题的解决方法:

class Tree:
    def __init__(self, value):
        self.value = value
        self.left = None
        self.right = None
    def insert_node(self, node: 'Tree'):
        if node.value < self.value:
            if self.left is None:
                self.left = node
            else:
                self.left.insert_node(node)
        else:
            if self.right is None:
                self.right = node
            else:
                self.right.insert_node(node)

在上面的示例代码中,insert_node方法的参数node引用了同一类Tree。为了避免出现错误,我们将类型注释中的Tree放在了引号中。

通过将类型放在引号中,我们成功解决了在同一类中引用同一类类型注释的问题。这样,我们就可以正常使用这个参数了。

0