繁体   English   中英

在嵌套 class 的方法中键入提示?

[英]type hint in method for a nested class?

考虑一个嵌套的 class 定义外部 class 属性的类型:

class Test():
    def __init__(self):
        self.foo: list[self.Test2] = []

    class Test2():
        pass

使用各种类型检查器,此注释无效。 例如,PyRight 采用分配值的类型,即通用列表[]而不是类型提示list[self.Test2]

(variable) foo: list

在此处输入图像描述


如果我用bar: list[Test.Test2] = []在最外面的 scope 分配一个变量,它可以正常工作:

(variable) bar: list[Test2]

在此处输入图像描述

如何让foolist[Test2]作为其类型?

根本问题是self不是一种类型,因此self.Test2也不是。

使用static对类型的引用,它将起作用。

class Test:
    def __init__(self):
        self.foo: list[Test.Test2] = []

    class Test2:
        pass

如果名称长度是一个问题,请使用别名。

class Test:
    def __init__(self):
        self.foo: list[T2] = []

    class Test2:
        pass

T2 = Test.Test2

显然将它分配给一个变量,然后在类型提示中使用它..?

class Test():
    def __init__(self):
        type_hint = self.Test2
        foo: list[type_hint] = []

    class Test2():
        pass

在此处输入图像描述

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM