Python中类型提示的2个类的相互依赖性

时间:2018-06-07 07:41:00

标签: python-3.x type-hinting

我想在Python 3.4+中定义2个类并使用类型提示,但它们之间存在某种依赖关系。

这是我的代码

class Child():
    def __init__(self, name:str, parent:Parent) -> None:
        """Create a child

        Args:
            name (str): Name of the child
            parent (Parent): Parent (object)
        """
        self.name = name
        self.parent = parent
        parent.give_life(self)


class Parent():
    def __init__(self, name:str) -> None:
        self.name = name
        self.Children = []  # type: List[Child]

    def give_life(self, child:Child) -> None:
        self.Children.append(child)

以及pylint返回的错误:

  

E0601:使用变量' Parent'在分配之前

如何提示parent类初始化函数的Child参数的类型?

谢谢

1 个答案:

答案 0 :(得分:2)

这是前瞻性声明的案例。

为了使其有效,您可以为'Parent'函数Parent而不是类Child.__init__添加字符串{以及Parent.give_life以使其对称)。

结果代码如下:

class Child():
    def __init__(self, name:str, parent:'Parent') -> None:
        """Create a child

        Args:
            name (str): Name of the child
            parent (Parent): Parent (object)
        """
        self.name = name
        self.parent = parent
        parent.give_life(self)


class Parent():
    def __init__(self, name:str) -> None:
        self.name = name
        self.Children = []  # type: List[Child]

    def give_life(self, child:'Child') -> None:
        self.Children.append(child)