首页 > 解决方案 > 为什么 PyCharm 在键入两个类的联合时找不到参考

问题描述

PyCharm 亮点:“在 'Foo | Bar' 中找不到引用 'object_var'

'class_var' 没有亮点。代码运行正常,没有错误。

from typing import Union, Type


class Foo:
    class_var = "fo"

    def __init__(self):
        self.object_var = "o"


class Bar:
    class_var = "ba"

    def __init__(self):
        self.object_var = "r"


def foo_bar(file_object: Union[Type[Foo], Type[Bar]]):

    class_var = file_object.class_var
    object_var = file_object.object_var

    return class_var, object_var

带有突出显示部分的代码

标签: pythonpycharmsyntax-highlightingtyping

解决方案


Type[Foo]Foo描述了继承或自身的类定义Foo,此声明与实例无关,请参阅https://www.python.org/dev/peps/pep-0484/#the-type-of-class-objects

由于object_var在这两种情况下都是一个实例变量,PyCharm 正确地引发了警告。

的用途是foo_bar什么?我想类型提示应该是file_object: Union[Foo, Bar].


推荐阅读