Pygame:拆包会引发SystemError

时间:2019-03-16 23:23:15

标签: python pygame

我正面临着一种奇怪的行为:在我将其归类之前,在2D向量上解压缩赋值的工作非常好。

$ ipython
Python 3.6.7 (default, Oct 22 2018, 11:32:17) 
IPython 5.5.0 

pygame 1.9.4
Hello from the pygame community. https://www.pygame.org/contribute.html
In [1]: from pygame.math import Vector2

In [2]: a = Vector2(1,1)

In [3]: x,y = a

In [4]: class myvec(Vector2):
   ...:     pass
   ...: 

In [5]: b = myvec(1,1)

In [6]: z,w = b
---------------------------------------------------------------------------
SystemError                               Traceback (most recent call last)
<ipython-input-6-dc661fdbb625> in <module>()
----> 1 z,w = b

SystemError: src/math.c:2954: bad argument to internal function

有人可以帮我弄清楚这里发生了什么吗?是我需要在其他地方报告的pygame错误还是我做错了什么?

有趣的事实:它在一段时间内运行良好,然后突然开始抛出该异常,并且没有回头路了。

1 个答案:

答案 0 :(得分:1)

这可能不是答案,但是我从您的示例开始进行了一些检查。例如,表面上看起来确实像您的两个类至少有些不同:

 >>> [print(item) for item in dir(a) if item not in dir(b)]
 []
 >>> [print(item) for item in dir(b) if item not in dir(a)]
 __dict__
 __module__
 __weakref__
 [None, None, None]

所以看起来表面上继承确实增加了一些东西,即使您只是在表面上复制旧类。

因此,让我们看一下here中原始类的外观:

Welp,它是用C语言实现的,但错误似乎指向第2954行:

    double *other_coords;

这让我很困惑,但是我会将其作为问题提交到github上,或者等待评论中提到的问题修复程序推出