从 psychopy.visual.DotStim 继承时出现元类错误
metaclass error when inheriting from psychopy.visual.DotStim
我正在尝试像这样从 visual.DotStim 继承 class
class JitterDots(visual.DotStim):
...
我总是得到臭名昭著的元class错误:
TypeError: Error when calling the metaclass bases metaclass conflict: the metaclass of a derived class must be a (non-strict) subclass of the metaclasses of all its bases
我知道你可以通过合并所有基础 classes 的元classes 来解决这个问题,但我看不到 DotStim 或其基础在哪里使用任何元classes , 所以我真的很困惑。
有什么建议吗?
这似乎对我有用:
from psychopy.visual import dot
class JitterDots(dot.DotStim):
pass
与您的直接问题无关,但仍然是一个可能的陷阱:
我还注意到 DotStim
的某些 bases/parents 直接继承自 object
,但从未通过 super()
初始化 它们的 父级 --尽管在 DotStim.__init__()
中调用了 super()
。然而,"doing so will cause other classes' __init__
methods to not be called",根据https://fuhm.net/super-harmful/
我正在尝试像这样从 visual.DotStim 继承 class
class JitterDots(visual.DotStim):
...
我总是得到臭名昭著的元class错误:
TypeError: Error when calling the metaclass bases metaclass conflict: the metaclass of a derived class must be a (non-strict) subclass of the metaclasses of all its bases
我知道你可以通过合并所有基础 classes 的元classes 来解决这个问题,但我看不到 DotStim 或其基础在哪里使用任何元classes , 所以我真的很困惑。
有什么建议吗?
这似乎对我有用:
from psychopy.visual import dot
class JitterDots(dot.DotStim):
pass
与您的直接问题无关,但仍然是一个可能的陷阱:
我还注意到 DotStim
的某些 bases/parents 直接继承自 object
,但从未通过 super()
初始化 它们的 父级 --尽管在 DotStim.__init__()
中调用了 super()
。然而,"doing so will cause other classes' __init__
methods to not be called",根据https://fuhm.net/super-harmful/