昨天我从3.11
升级到python 3.12
。我使用的编辑器是VScode
。
当我使用matplotlib的标准模式(来自官方文档)时,intellisense无法识别类型,因此按下点无法暴露方法和属性。
下面是可复制的代码:
import matplotlib.pyplot as plt
fig, ax = plt.subplots()
fruits = ['apple', 'blueberry', 'cherry', 'orange']
counts = [40, 100, 30, 55]
colours = ['red', 'blue', 'red', 'orange']
ax.bar(fruits, counts, label=colours, color=colours)
ax.set_ylabel('fruit supply')
ax.set_title('Fruit supply by kind and color')
ax.legend(title='Fruit color')
plt.show()
字符串
如果我显式地输入hint**,那么它就可以工作。但是这非常笨拙,看起来很糟糕。
我现在要做的是:
import matplotlib.pyplot as plt
from matplotlib.figure import Figure # added this
from matplotlib.axes import Axes # added this
fig, ax = plt.subplots()
fig: Figure # added this
ax: Axes # added this
fruits = ['apple', 'blueberry', 'cherry', 'orange']
counts = [40, 100, 30, 55]
colours = ['red', 'blue', 'red', 'orange']
ax.bar(fruits, counts, label=colours, color=colours)
ax.set_ylabel('fruit supply')
ax.set_title('Fruit supply by kind and color')
ax.legend(title='Fruit color')
plt.show()
型
在我的记忆中,我从来没有在Python的早期版本中遇到过这个问题。
如何解决这个问题,使我不必显式地键入fig
和ax
?
1条答案
按热度按时间q3qa4bjr1#
在两个Python版本中,我都没有在
ax.
之后看到Intellisense。原因是matplotlib 3.8.0中的plt.subplots
返回tuple[Figure, Any]
,所以Pylance不知道ax
的类型。Matplotlib 3.8.0添加了Pylance信任的内联类型,因为lib是py.typed
。如果我安装的是matplotlib 3.7.3而不是3.8.0(不管Python版本如何),那么Pylance将使用其捆绑的matplotlib存根,并将
ax
视为Axes
对象。