Dar*_*enW 4 python methods object
在一个交互式的Python会话中,我有时会做一些愚蠢的事情
plot.ylimits = (0,100)
Run Code Online (Sandbox Code Playgroud)
plot是某个Plot类的实例,ylimits是它的一个方法.我本应该用这个:
plot.ylimits(0,100)
Run Code Online (Sandbox Code Playgroud)
Python工作的方式,绘图对象现在有一个名为ylimits的新成员,它将一个元组作为其值,而方法,最初由Plot类提供的可执行子程序,曾经用ylimits(...)调用的是不见了.也许在我脑海中的某个地方,我认为ylimits是一个属性,并且分配给它会调用一些隐藏的setter方法,就像在其他一些语言中所做的那样.
我怎样才能找回那种方法?如何修复我的绘图对象,同时保持在交互式会话中我还有许多其他变量,函数等?
我发现重装(theplotmodule)不起作用.我破坏了Plot的一个特定实例; 刷新Plot类的定义和其他东西没有帮助.
我正在使用Python 2.7
一个简单的方法就是做del plot.ylimits.通常,方法是在类上定义的,而不是实例.Python每次尝试访问它们时都会查看属性,当它在实例上找不到它们时,它会进入类.当你这样做时plot.ylimits=(0,100),你创建了一个新的实例属性,因此Python停在那里并且不会查找class属性,即使它仍然存在. del plot.ylimits将删除实例属性,现在plot.ylimits将再次通过在类上查找该方法来访问该方法.
但请注意,这只适用于您覆盖的东西最初是在类上而不是实例上.如果你实际上有数据存储在实例上,并且你覆盖它,它就会永远消失.