python – Pygame:赋值解包抛出SystemError

我正面临着一个奇怪的行为:在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 bug,还是我做错了什么?

有趣的事实:它在一段时间内完美地工作,然后它突然开始抛出这个异常并且没有回头路.

最佳答案 这可能不是一个答案,但我从你的例子开始做了一些检查.例如,它表面看起来像你的两个类至少有点不同:

 >>> [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上的问题提交或等待评论中提到的问题解决方案推出

点赞