Seite 1 von 1

Python, Pygame auf WinXP: syntax error bei '@'

Verfasst: Donnerstag 8. Februar 2007, 11:07
von siggi
Hallo zusammen,

habe eine PyGame- und PyOde-Neulingsfrage:

von http://www.pygame.org/projects/20/364/?release_id=614
habe ich mir geladen
http://www.sixthfloorlabs.com/files/ale ... 0.1.tar.gz, das ergibt
alexandria-0.1.1-src.zip. Das ergibt entpackt den Ordner alexandria-0.1.1
mit Unterordnern und Dateien

Nach Starten dort von main.py kommt folgende Fehlermeldung:
-------------------------------------------------------------------------
@periodic(10)
^
SyntaxError: invalid syntax

Detaillierter:

C:\Dokumente und Einstellungen\Besitzer\Eigene Dateien \My Python23 files>cd alexandria-0.1.1
C:\Dokumente und Einstellungen\Besitzer\Eigene Dateien\My Python23 files\alexandria-0.1.1>python main.py
Traceback (most recent call last):
File "main.py", line 11, in ?
import Input
File " C:\Dokumente und Einstellungen\Besitzer\Eigene Dateien \My Python23 files\\alexandria-0.1.1\Input.py", line 111
@periodic(10)
^
SyntaxError: invalid syntax

Warum? Was läuft falsch?

Installiert habe ich, meine ich, alles , was gefordert ist und wichtig sein
könnte:
--------------------------------------------------------------------------------------
PythonWin 2.3.5 und die darauf abgestimmten Versionen von PyGame,
Numeric, Numarray, Numpy, PyODE, ODE

Kann mir jemand helfen?

Danke,

siggi

P.S.
die betreffende Stelle in input.py ist:
-----------------------------------------
def stop(self, start):
if self.game.input_disabled: return
self.game.geometry.set_velo(self.game.player,Vector([0, 0]))

@periodic(10)
def shoot_bullet(self):
game = self.game
if game.input_disabled: return
player = game.player
game.shoot(player, Bullet(player, killstr=player.killstr, bounces=0, strength=20))

Also die EXE aus
http://www.sixthfloorlabs.com/files/ale ... -win32.zip
läuft bei mir ohne Probleme.

Verfasst: Donnerstag 8. Februar 2007, 12:21
von Y0Gi
Das '@' dient zur Kennzeichnung eines Decorators. Grob gesagt ist das eine Funktion, die eine andere Funktion/Methode wrappen und dabei verändern/ergänzen/die Rückgabewerte ergänzen/bearbeiten/filtern kann.

Decorators wurden mit Python 2.4 eingeführt.

Verfasst: Donnerstag 8. Februar 2007, 14:43
von siggi
Y0Gi hat geschrieben:Das '@' dient zur Kennzeichnung eines Decorators. Grob gesagt ist das eine Funktion, die eine andere Funktion/Methode wrappen und dabei verändern/ergänzen/die Rückgabewerte ergänzen/bearbeiten/filtern kann.

Decorators wurden mit Python 2.4 eingeführt.
Danke YOGi! Das erklärt, warum es bei mir mit Python 2.3.5 nicht klappt.

siggi