Pygame: назначение распаковки выдает SystemError - PullRequest
4 голосов
/ 17 марта 2019

Я сталкиваюсь с любопытным поведением: распаковка заданий на 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 Ответ

1 голос
/ 17 марта 2019

Возможно, это не ответ, но я сделал несколько проверок, начиная с вашего примера. Например, на первый взгляд все выглядит так, как будто два ваших класса немного отличаются:

 >>> [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]

так что похоже, что наследование действительно что-то добавляет, хотя на первый взгляд вы просто копируете старый класс.

Итак, давайте посмотрим, как выглядит исходный класс из здесь :

Welp, это реализовано в C. но ошибка, похоже, указывает на строку 2954:

    double *other_coords;

Это поставило меня в тупик, но я бы подал это как проблему на github или подождал, пока не будет выпущено исправление, упомянутое в комментарии

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...