Seite 1 von 1

Instanz wird mit float-objekt verwechselt.

Verfasst: Montag 21. April 2008, 10:06
von Martuk
Hallo!

Das ist mein erster Beitrag in dem Forum.

Habe gerade ein Problem mit Python in dem eine Instanz der Klasse ScreenState von Python komischerweise als float-objekt interpretiert wird.

Hier die Fehlermeldung:
File "main.py", line 69, in gameLoop
self.checkScreen()
File "main.py", line 76, in checkScreen
if self.screenState.changeScreen == True:
AttributeError: 'float' object has no attribute 'changeScreen'
Hier scheint der Fehler aufzutreten (habe alles auf die wichtigen Sachen gekürzt):

Code: Alles auswählen

## Anfang Aufruferklasse Infos
    def checkScreen(self):
        self.screenState = self.screen.getState()
        
# Das ist zeile 76:
        if self.screenState.changeScreen == True:
            print "Screen muss gewechselt werden.\n"
            
        return

# Intialisierung von self.screenState in def __init__(self):
        self.screen = MenuScreen()
        self.screenState = self.screen.getState()
## Ende Aufruferklasse Infos

# Grundlegender Aufbau der Klassen:
class ScreenState:
    def __init__(self):
        self.name = "Noname"
        self.changeScreen = False
        self.nextScreen = None
        self.timeInScreen = 0.0
        
        return

class Screen:
    def __init__(self):
        self.screenState = ScreenState()
        return
    
    def getState(self):
        return self.screenState
MenuScreen ist von Screen abgeleitet.

Woran kann das liegen?

Martuk

Edit: Benutze Python 2.5.2

Verfasst: Montag 21. April 2008, 10:29
von helduel
Moin,

mach doch mal vor der Zeile 76 ein 'print' und schau, was self.screenState da wirklich ist. Vielleicht überschreibst du das Attribute ja aus Versehen irgendwo?

Gruß,
Manuel

Verfasst: Montag 21. April 2008, 11:08
von Martuk
Hallo

Du hattest recht, ich bin heute morgen wohl erblindet ;-)

self.screenState = task.time

in

self.screenState.timeInScreen = task.time

geändert...

Muss mich wohl noch an dieses dynamische Typ-System gewöhnen.

Martuk