如何在类型提示中定义元组或列表的大小

Nam*_*sen 3 python tuples parameter-passing type-hinting python-3.x

有没有办法在参数的类型提示中定义元组或列表的大小?

目前我正在使用这样的东西:

    from typing import List, Optional, Tuple

    def function_name(self, list1: List[Class1]):
        if len(list1) != 4:
            raise SomeError()
        pass
        # some code here
Run Code Online (Sandbox Code Playgroud)

我正在寻找一种更精简的方法来做到这一点。

Dal*_*jia 5

对于列表来说,它没有意义,因为它们是动态的,另一方面,对于元组,定义中的类型数量就是它所包含的元素数量:

from typing import Tuple

example_1: Tuple[int, int] = (1, 2)  # This is valid
example_2: Tuple[int, int] = (1, 2, 3)  # This is invalid
example_3: Tuple[int, ...] = (1, 2, 3, 4)  # This is valid, the ellipses means any number if ints
example_4: Tuple[int, ...] = (1, 'string')  # This is invalid

# So in your case if you need 4 you can do something like this
My4Tuple = Tuple[Class1, Class1, Class1, Class1]
def my_function(self, arg1: My4Tuple):
    pass
Run Code Online (Sandbox Code Playgroud)

永远记住,这不是在运行时强制执行的