Instanz wird mit float-objekt verwechselt.

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.
Martuk
User
Beiträge: 2
Registriert: Montag 21. April 2008, 09:54

Instanz wird mit float-objekt verwechselt.

Beitragvon Martuk » Montag 21. April 2008, 10:06

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
Benutzeravatar
helduel
User
Beiträge: 300
Registriert: Montag 23. Juli 2007, 14:05
Wohnort: Laupheim

Beitragvon helduel » Montag 21. April 2008, 10:29

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
Martuk
User
Beiträge: 2
Registriert: Montag 21. April 2008, 09:54

Beitragvon Martuk » Montag 21. April 2008, 11:08

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

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder