from typing import TypeVar, Generic
import numpy as np
import matplotlib.pyplot as plt
from matplotlib.axes import Axes
# Little helper class, which is only used as a type.
DType = TypeVar("DType")
class Array(np.ndarray, Generic[DType]):
def __getitem__(self, key) -> DType:
return super().__getitem__(key)
# Force assign the type, which is correct for most intents and purposes
fig, axs_ = plt.subplots(2, 2)
axs: Array[Axes] = axs_ # type: ignore
# Use as an ndarray of Axes
axs[0,0].plot(...)
2条答案
按热度按时间vwhgwdsa1#
事实证明,强式输入
axs
变量并不简单,需要很好地理解如何输入np.ndarray
。请参阅本题和本题了解更多详细信息。
最简单、最强大的解决方案是用
'
字符 Packagenumpy.ndarray
,以避免臭名昭著的TypeError:当Python试图解释表达式中的[]时,'numpy._DTypeMeta'对象是不可订阅的。举个例子:
Pylance能够很好地检测并正确运行:
c9x0cxw02#
由于我不打算理解的原因,currently accepted answer在我的设置中不断给出警告、错误,并且缺乏成功的类型推理。
我所做的是这样的,它允许切片,并允许Pylance理解
.plot
是Axes.plot
: