Для списков это не имеет смысла, потому что они динамические, для кортежей, с другой стороны, число типов в определении - это число элементов, которые оно содержит:
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
Всегда помните, что это неприменяется во время выполнения