我有一个Python代码:
Select
*
From
TableB
LEFT JOIN
TableB
ON TableA.primary_key = TableB.foreign_key;
我想生成列表以返回一个列表,其中包括一个可能包含None或MyClass对象的列表。 简化的列表可能看起来像这样
from typing import List, Optional
class MyClass:
pass
def generate_list() -> List[List[Optional[MyClass]]]:
my_list = [[None for _ in range(10)] for _ in range(10)]
# assignments might be extended in the future
my_list[0][0] = MyClass()
return my_list
现在mypy在网上引发错误
[[None, None, <my_class_object>], [<my_class_object>, None, <my_class_object>]]
有消息
my_list[0][0] = MyClass()
我想我缺少了一些东西,或者甚至可能无法完成我想要的事情。
答案 0 :(得分:1)
在这种情况下,mypy的推断无法推断出您想要的内容。从文档中:
Mypy将初始分配视为变量的定义。如果您未明确指定变量的类型,则mypy将根据值表达式的静态类型来推断类型
https://mypy.readthedocs.io/en/latest/type_inference_and_annotations.html
my_list
被推断为List[List[None]]
,因为这是表达式的类型。要解决此问题,必须将其注释为List[List[Optional[MyClass]]]
。