我正面临着一个奇怪的行为:在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上的问题提交或等待评论中提到的问题解决方案推出