Python:打字,如何从另一个内部类使用一个内部类?

问题描述 投票:0回答:1

是否可以将内部类函数的参数指定为另一个内部类的类型?

class MyClass():
    
    class InnerClass1():
        pass
        
    class InnerClass2():
        def func(self, param: InnerClass1):
            pass
        
if __name__ == '__main__':
    obj = MyClass()

此报道

NameError: name 'InnerClass1' is not defined

使用

param: MyClass.InnerClass1
报告
NameError: name 'MyClass' is not defined

如果这是不可能的,正确声明参数类型的替代方法是什么?

python inner-classes python-typing
1个回答
0
投票

可以通过字符串引用类型:

class MyClass():
    
    class InnerClass1():

        @property
        def name(self) -> str:
            return "name"
        
    class InnerClass2():
        def func(self, param: "MyClass.InnerClass1"):
            pass
        
if __name__ == '__main__':
    obj = MyClass()

这显示 VS Code 自动完成功能适用于

param
:

© www.soinside.com 2019 - 2024. All rights reserved.