python - 为什么 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
解决方案
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]
.
推荐阅读
- python - Bokeh Live Plot 错误 - 泡菜数据 - 解包需要长度为 8 的字符串参数
- c# - 修复搜索过滤器 C# WPF
- spring - 如何通过@RestController中的身份验证方法从登录表单重定向到@Controller中的html文件?
- http-headers - HTTP DELETE 是否需要 Content-Type 和 Accept Headers
- python - 如何让`conda env list`隐藏环境而不删除它?
- python - 从 Excel 中提取返回任意值
- python - PyFFTW 在多维数组上的性能
- image - 使用 openCV 处理来自 ROS 的深度图像消息
- excel - 多个文本字符串的一部分上的 VLOOKUP
- javascript - JS - 如何在对象上定义多状态属性