python-3.x 键入.NamedTuple作为列表的类型通告不起作用

6tr1vspr  于 2023-05-30  发布在  Python
关注(0)|答案(1)|浏览(99)

我想我可以为列表的元素指定一个类型,如下所示:

import typing

CustomType = typing.NamedTuple("CustomType", [("one", str), ("two", str)])

def test_function(some_list: list[CustomType]):
    print(some_list)
    

if __name__ == "__main__":
    test_list = list[
        CustomType(one="test", two="test2"),
        CustomType(one="Test", two="Test2")
    ]
    
    test_function(some_list=test_list)

但这警告我,在test_function调用Expected type 'list[CustomType]', got 'Type[list]' instead时。
以下是可行的,但我不确定为什么必须这样做:

test_list: list[CustomType] = list([
    CustomType(one="test", two="test2"),
    CustomType(one="Test", two="Test2")
])
4zcjmb1e

4zcjmb1e1#

这里的问题是如何示例化列表。list[]会给予你一个列表类型,它有一些额外的味道。你想用经典的语法示例化列表,例如:使用简单的括号,或者更复杂的list([...])

if __name__ == "__main__":
    test_list = [
        CustomType(one="test", two="test2"),
        CustomType(one="Test", two="Test2")
    ]
    
    test_function(some_list=test_list)

相关问题