python:如何监视变量?变量更改时执行命令

python:如何监视变量?变量更改时执行命令,python,Python,我有一节这样的课 类WaveData(对象): 定义初始化(自身,数据): self.data=数据 并创建一个数据对象,绘制一个图形 wave=WaveData([[1,2,3], [7, 5, 6]]) 将matplotlib.pyplot作为plt导入 图=plt.图() plot1,=fig.canvas.figure.subplots().plot(wave.data[0]) plot2,=fig.canvas.figure.subplots().plot(wave.data[1]

我有一节这样的课


类WaveData(对象):
定义初始化(自身,数据):
self.data=数据
并创建一个数据对象,绘制一个图形

wave=WaveData([[1,2,3],
[7, 5, 6]])
将matplotlib.pyplot作为plt导入
图=plt.图()
plot1,=fig.canvas.figure.subplots().plot(wave.data[0])
plot2,=fig.canvas.figure.subplots().plot(wave.data[1])
我希望当我改变波浪值时,绘图将同步改变

wave.data[1]=[5,6,7]#希望数字一起变化
我尝试为
WaveData
类添加方法
changedata
,但是:

  • 它需要使用全局变量
    fig
    ,可能不是reasonale(我可以把fig作为self属性,但事实上,fig还链接了其他没有写在这里的类对象)
  • 我无法通过直接更改数据来更改图:
    wave.data[1]=[5,6,7]
  • 类WaveData(对象):
    定义初始化(自身,数据):
    self.data=数据
    def changedata(自身、值、索引):
    self.data[索引]=值
    #--更改绘图数据的绘图索引--#
    全局绘图1,绘图2,图
    plot1.set_ydata(self.data[1])
    plot2.set_ydata(self.data[2])
    图canvas.draw_idle()
    #--更改绘图数据的绘图索引--#
    
    我想创建一个监视程序来监视
    wave.data
    value。当检测到值变化时,执行一些操作


    如何做?

    正确:绘图不是一个动态或交互式的过程。您开始使用正确的方法,使用access方法更改波形。现在您必须重新绘制并重新显示结果。。。这可能需要手动关闭第一个打印,具体取决于所选图形包的界面(例如
    matplotlib


    要获得完全交互的体验,您可能需要使用动画软件包,如PyGame,其中视觉显示的更改是软件包假设的一部分。

    正确:绘图不是动态或交互过程。您开始使用正确的方法,使用access方法更改波形。现在您必须重新绘制并重新显示结果。。。这可能需要手动关闭第一个打印,具体取决于所选图形包的界面(例如
    matplotlib


    要获得完全互动的体验,您可能需要使用一个动画软件包,如PyGame,其中视觉显示的更改是软件包假设的一部分。

    我们不能利用属性集的优势或在此处获取吗?@mahesh不容易不。。。假设您为
    .data
    制作了一个getter。。。然后用户仍然可以使用
    更改数据。数据[0][0]=100
    。。。因此,现在您需要将返回的值包装到trap
    \uuuu setitem\uuuu
    等(必须包装它返回的值)等。我们不能利用属性集的优势或在这里获取吗?@mahesh不容易不。。。假设您为
    .data
    制作了一个getter。。。然后用户仍然可以使用
    更改数据。数据[0][0]=100
    。。。因此,现在需要将返回的值包装到trap
    \uuuu setitem\uuuu
    等(必须包装返回的值)等。