super函数在maya python模块中不起作用

jed*_*mao 4 python class maya

不知何故,这在Maya/Python脚本编辑器中工作正常,但在我的模块代码中失败.有人有主意吗?

class ControlShape(object):
    def __init__(self, *args, **kwargs):
        print 'Inside ControlShape...'

class Cross(ControlShape):
    def __init__(self, *args, **kwargs):
        print 'Entering Cross...'
        super(Cross, self).__init__(*args, **kwargs)
        print 'Leaving Cross...'

x = Cross()
Run Code Online (Sandbox Code Playgroud)

这给了我一个TypeError:super(type,obj):obj必须是类型的实例或子类型.

Cha*_*non 21

它与重新加载模块有关.重新加载模块通常会更改内存中的内部对象,这使得超级返回的isinstance测试返回False.

http://thingspython.wordpress.com/2010/09/27/another-super-wrinkle-raising-typeerror/

  • 你救了我的一天 我的代码用于需要很长的正常运行时间的守护程序,并且使用了重新加载的模块,在我回答你之前我不知道.显然,我们需要比这个糟糕的黑客更可靠的东西. (2认同)
  • 我经常使用ipython的自动重载功能 (2认同)

jed*_*mao 0

事实证明,这与我在模块顶部的导入有关。不过我忘了那是哪一个了。我应该在发现它是什么的那一刻就发布它。