有没有办法在 Python 中将参数显式声明为数组?[复制]

Is there a way to explicitly declare an argument as an array in Python? [duplicate]

提问人:user21113865 提问时间:8/4/2023 更新时间:8/4/2023 访问量:42

问:

有没有办法在python中明确声明函数的参数应该是某个自定义类的数组?

我可以编写以下函数来强制执行参数的类型

def foo_bar(foo: str, bar: int):
    print("foo bar stuff")

但是,如果我希望参数是自定义类的数组怎么办

class foobar():
    def __init__(self):
    ...

def foo_bar(foo: str, bar: int, array_of_foobar: [foobar]):
    print("foo bar stuff")

是否有语法可以确保变量“array_of_foobar”是正确类型的数组?

更进一步,如果我有使用 AbstractBaseClass 从类 foobar() 派生的类怎么办?如果数组是 foobar 类型,或者是从 foobar 类型派生的,我可以确保数组吗?

python-3.x 参数传递 abc

评论

0赞 juanpa.arrivillaga 8/4/2023
“数组”是什么意思?
0赞 juanpa.arrivillaga 8/4/2023
“我可以编写以下函数来强制执行参数的类型”不,不,你不能。这些是类型注释。它们不会在运行时强制执行。理解这一点至关重要。你可以做到,它会毫无问题地运行foo_bar(42, "baz")
0赞 juanpa.arrivillaga 8/4/2023
所以你想要的是(注意,这些是列表而不是数组,Python中的数组通常是指一个或可能是一个标准库)。注意,其类型参数是不变的,如果需要协方差,可以使用 Sequence。最后,重申一下,除非您在代码中显式执行此操作(通过自己编写或使用执行此操作的库),否则这些都不会在运行时强制执行list[foobar]numpy.ndarrayarray.arraylist
0赞 user21113865 8/4/2023
啊,我明白了,谢谢

答: 暂无答案