python - 具有“@”的对象的 Python 类型提示(矩阵乘法)
问题描述
我有一个fun()
接受 NumPy ArrayLike和“矩阵”的函数,并返回一个 numpy 数组。
from numpy.typing import ArrayLike
import numpy as np
def fun(A, x: ArrayLike) -> np.ndarray:
return (A @ x) ** 2 - 27.0
type
对于有操作的实体,什么是正确的@
?请注意,fun()
也可以接受scipy.sparse;也许更多。
解决方案
您可以使用typing.Protocol
来断言该类型实现了__matmul__
.
class SupportsMatrixMultiplication(typing.Protocol):
def __matmul__(self, x):
...
def fun(A: SupportsMatrixMultiplication, x: ArrayLike) -> np.ndarray:
return (A @ x) ** 2 - 27.0
我相信,x
如果您想要的不仅仅是@
作为运算符的支持,您可以通过提供类型提示和返回类型提示来进一步完善这一点。
推荐阅读
- javascript - 如何在 JavaScript 中使用 Base64String 值设置 Dynamics CRM/365 字段
- javascript - 为什么我无法写入我的 firebase 数据库?
- java - 运行我的第一个 java 应用程序时出现 InvalidModuleDescriptorException
- linux - 了解系统中可用连续内存量的方法
- javascript - 量角器:元素当前不可交互,可能无法操作
- django - 无法发布到 azure
- python - 捕获运行无限循环的进程的标准输出和标准错误
- python - 使用python从命令行输出中获取数据
- c# - 当 MQTTnet 服务器未运行时,PublishAsync 不会失败
- gremlin - 如何使用 gremlin 为 Neptune 编写类似查询,因为 Neptune 不支持 Lambda 函数