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

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
siggi
User
Beiträge: 79
Registriert: Montag 29. Januar 2007, 14:22

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.
Y0Gi
User
Beiträge: 1454
Registriert: Freitag 22. September 2006, 23:05
Wohnort: ja

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.
siggi
User
Beiträge: 79
Registriert: Montag 29. Januar 2007, 14:22

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
Antworten