我应该如何在 Python 中注释返回 ctypes 数组的函数?
How should I annotate a function returning a ctypes array in Python?
考虑以下 Python 代码:
def foo(aqs : typing.List[int]) -> ??? :
array_type = ctypes.c_int64 * len(aqs)
ans = array_type(*aqs)
return ans
此函数的 return 值的正确注释是什么? (代替 ???
)
此函数没有一致的 return 类型,因为 returned 数组的长度是数组类型的一部分。但是,该类型始终是 ctypes.Array
的子类,这是您可以使用的最具体的注释:
def foo(aqs: List[int]) -> ctypes.Array:
...
我是 Python 的新手,但 typing.List[T]
似乎就是您要找的东西(就像@JörgBeyer 在上面的评论中所说)。
returns class RegistrationRequest
实例列表的函数示例:
import string
import typing
from datetime import datetime
from dataclasses import dataclass
@dataclass()
class RegistrationRequest:
activity: string
start_at: datetime
def registrations_requests() -> typing.List[RegistrationRequest]:
return [
RegistrationRequest('Zumba', datetime(2019, 6, 25, 12, 30, 0, 0)),
RegistrationRequest('Zumba', datetime(2019, 6, 27, 19, 15, 0, 0)),
]
print('{0}'.format(registrations_requests()))
输出为:
[RegistrationRequest(activity='Zumba', start_at=datetime.datetime(2019, 6, 25, 12, 30)), RegistrationRequest(activity='Zumba', start_at=datetime.datetime(2019, 6, 27, 19, 15))]
使用python的内置列表类型List[T]
def foo(aqs : typing.List[int]) -> List[T]:
array_type = ctypes.c_int64 * len(aqs)
ans = array_type(*aqs)
return ans
将 T 替换为列表类型
考虑以下 Python 代码:
def foo(aqs : typing.List[int]) -> ??? :
array_type = ctypes.c_int64 * len(aqs)
ans = array_type(*aqs)
return ans
此函数的 return 值的正确注释是什么? (代替 ???
)
此函数没有一致的 return 类型,因为 returned 数组的长度是数组类型的一部分。但是,该类型始终是 ctypes.Array
的子类,这是您可以使用的最具体的注释:
def foo(aqs: List[int]) -> ctypes.Array:
...
我是 Python 的新手,但 typing.List[T]
似乎就是您要找的东西(就像@JörgBeyer 在上面的评论中所说)。
returns class RegistrationRequest
实例列表的函数示例:
import string
import typing
from datetime import datetime
from dataclasses import dataclass
@dataclass()
class RegistrationRequest:
activity: string
start_at: datetime
def registrations_requests() -> typing.List[RegistrationRequest]:
return [
RegistrationRequest('Zumba', datetime(2019, 6, 25, 12, 30, 0, 0)),
RegistrationRequest('Zumba', datetime(2019, 6, 27, 19, 15, 0, 0)),
]
print('{0}'.format(registrations_requests()))
输出为:
[RegistrationRequest(activity='Zumba', start_at=datetime.datetime(2019, 6, 25, 12, 30)), RegistrationRequest(activity='Zumba', start_at=datetime.datetime(2019, 6, 27, 19, 15))]
使用python的内置列表类型List[T]
def foo(aqs : typing.List[int]) -> List[T]:
array_type = ctypes.c_int64 * len(aqs)
ans = array_type(*aqs)
return ans
将 T 替换为列表类型