Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Inheritance 从psychopy.visual.dotsim继承时发生元类错误_Inheritance_Psychopy - Fatal编程技术网

Inheritance 从psychopy.visual.dotsim继承时发生元类错误

Inheritance 从psychopy.visual.dotsim继承时发生元类错误,inheritance,psychopy,Inheritance,Psychopy,我正试图像这样从visual.dotstin继承一个类 class JitterDots(visual.DotStim): ... 我总是遇到臭名昭著的元类错误: TypeError:调用元类基时出错元类冲突:派生类的元类必须是其所有基的元类的(非严格)子类 我知道你可以通过合并所有基类的元类来解决这个问题,但是我看不出dotstin或它的基类在哪里使用元类,所以我真的很困惑 有什么建议吗?这似乎对我有用: from psychopy.visual import dot class Jitt

我正试图像这样从visual.dotstin继承一个类

class JitterDots(visual.DotStim):
...
我总是遇到臭名昭著的元类错误:

TypeError:调用元类基时出错元类冲突:派生类的元类必须是其所有基的元类的(非严格)子类

我知道你可以通过合并所有基类的元类来解决这个问题,但是我看不出dotstin或它的基类在哪里使用元类,所以我真的很困惑


有什么建议吗?

这似乎对我有用:

from psychopy.visual import dot

class JitterDots(dot.DotStim):
    pass
与您当前的问题无关,但仍然存在一个可能的陷阱:
我还注意到,
dotsim
的一些基/父对象直接从
对象继承,但从未通过
super()
初始化它们的父对象,尽管
dotsim中调用了
super()
。然而,根据

的说法,“这样做会导致其他类的
\uuuuuu init\uuuu
方法不被调用”,这是相对较新的延迟导入可视模块(首次使用时导入,而不是导入可视模块时导入)的结果。这通常在大多数情况下都可以提高性能。因此,在某些基础中缺少对
super()
的调用不会被视为错误,而是被故意忽略了?或者你只是指我建议的示例代码及其与Gerrit问题的关系?我认为应该修复对super()缺少的调用,这不是故意的。但我认为Gerrit的问题是由于懒惰导入的新使用。导入visual时,DotStim不会自动导入其名称空间。它只有在实际使用时才导入。谢谢你的澄清。好的,所以我需要显式地“导入psychopy.visual.dot”。谢谢