我没有展示全班,因为问题很难简化,但我认为以下是关键:
class helper:
sharex = False
sharey = False
_objects = []
_figures = []
_axes = []
def __init__(self):
pass
def create(self):
figure, axes = plt.subplots(nrows=self.nrows,
ncols=self.ncols,
sharex=self.sharex,
sharey=self.sharey)
self._figures.append(figure)
self._axes.append(axes)
以下内容应说明我的问题:
test = plotting.helper()
test._axes
Out[9]: []
test.create()
test._axes
Out[10]:
[array([<matplotlib.axes._subplots.AxesSubplot object at 0x103dd1940>,
<matplotlib.axes._subplots.AxesSubplot object at 0x10c4a5278>,
<matplotlib.axes._subplots.AxesSubplot object at 0x10c1889b0>,
<matplotlib.axes._subplots.AxesSubplot object at 0x11c52eeb8>,
<matplotlib.axes._subplots.AxesSubplot object at 0x11c56f4a8>,
<matplotlib.axes._subplots.AxesSubplot object at 0x11c5b7be0>], dtype=object)]
test2 = plotting.helper()
test2._axes
Out[11]:
[array([<matplotlib.axes._subplots.AxesSubplot object at 0x103dd1940>,
<matplotlib.axes._subplots.AxesSubplot object at 0x10c4a5278>,
<matplotlib.axes._subplots.AxesSubplot object at 0x10c1889b0>,
<matplotlib.axes._subplots.AxesSubplot object at 0x11c52eeb8>,
<matplotlib.axes._subplots.AxesSubplot object at 0x11c56f4a8>,
<matplotlib.axes._subplots.AxesSubplot object at 0x11c5b7be0>], dtype=object)]
第二个对象应该为空,并且_axes
中没有任何轴存储。然而,它不仅包含轴,而且与(据称)独立的其他对象相同的轴。
为什么我不创建独立对象?
答案 0 :(得分:0)
在类声明中声明_axes
时,将其设为静态变量,意味着它对所有实例都是相互的。
您希望将_axes
的声明移至__init__
函数。