Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 3.x PyCharm抱怨通过另一个模块注入的变量引用未解析_Python 3.x_Pycharm_Python Import - Fatal编程技术网

Python 3.x PyCharm抱怨通过另一个模块注入的变量引用未解析

Python 3.x PyCharm抱怨通过另一个模块注入的变量引用未解析,python-3.x,pycharm,python-import,Python 3.x,Pycharm,Python Import,我有以下文件: # b.py from .a import A class B(A): ... 上述三个文件位于名为p的包中 一切正常,除了模块a中,PyCharm警告B是未解析的引用 问题: 有没有办法帮助PyCharm了解发生了什么并避免警告 如果有帮助,我可以重写导入语句,但希望将A和B类保留在单独的模块中。您可以定义B: # a.py def B(): assert False, "this needs to be overridden" class A:

我有以下文件:

# b.py
from .a import A
class B(A):
    ...

上述三个文件位于名为
p
的包中

一切正常,除了模块
a
中,PyCharm警告
B
是未解析的引用

问题:

有没有办法帮助PyCharm了解发生了什么并避免警告

如果有帮助,我可以重写导入语句,但希望将
A
B
类保留在单独的模块中。

您可以定义B:

# a.py
def B():
    assert False, "this needs to be overridden"

class A:
    def m(self):
        return B()
您还可以告诉pycharm忽略未解析的引用:

# a.py

class A:
    def m(self):
        # noinspection PyUnresolvedReferences
        return B()

我找到了另一种方法来缓解这个问题。将以下伪导入添加到
a.py
的末尾:

if __name__ == '__main__':
    from .b import B
这样PyCharm就不再抱怨,甚至可以对B及其方法进行检查


当然,导入实际上在运行时没有完成,因为
a.py
是。

B
设置为
None
会导致另一个关于
B
不可调用的警告。但是我不知道
noinspection
指令,谢谢!
# a.py

class A:
    def m(self):
        # noinspection PyUnresolvedReferences
        return B()
if __name__ == '__main__':
    from .b import B