local variable '...' referenced before assignment
Traceback (most recent call last):
File "/Users/..../Desktop/minrlj klass.py", line 10, in <module>
class grid(object):
File "/Users/.../Desktop/minrlj klass.py", line 109, in grid
play_game()
File "/Users/.../Desktop/minrlj klass.py", line 88, in play_game
self.mines = mines
UnboundLocalError: local variable 'mines' referenced before assignment
Får detta felmeddelande med min kod, tror att det beror på att min definition ligger typ .. utanför?? klassen, och därför blir det konstigt. Men vet inte hur jag ska göra för att det skall fungera. ps. jag måste ha en klass i det här spelet, för att bli godkänd.
Är det ngn som vill kolla på min kod? (orkar inte posta den här ifall ingen har lust & titta, för vill inte bli utskrattad xD)
Tydligen har mines inte fått något värde när man kommer till
self.mines = mines
Du får se till att den har det.
Laguna skrev:Tydligen har mines inte fått något värde när man kommer till
self.mines = mines
Du får se till att den har det.
Mjo men har lagt in de i definitionen (innan låg den bara i klassen)
mrlill_ludde skrev:Laguna skrev:Tydligen har mines inte fått något värde när man kommer till
self.mines = mines
Du får se till att den har det.
Mjo men har lagt in de i definitionen (innan låg den bara i klassen)
Vad menar du med "definitionen"?
Laguna skrev:mrlill_ludde skrev:Laguna skrev:Tydligen har mines inte fått något värde när man kommer till
self.mines = mines
Du får se till att den har det.
Mjo men har lagt in de i definitionen (innan låg den bara i klassen)
Vad menar du med "definitionen"?
Har en klass i den klassen e det massa defintioner se :
Visa spoiler
Sen kanske den allra sista defintionen är utanför den klassen eftersom jag får felmeddelandet
File "/Users/..../Desktop/minrlj klass.py", line 10, in <module>
class grid(object):
Två rader nedanför raden self.mines=mines så sätter du mines till nånting. Först då blir den definierad.
Laguna skrev:Två rader nedanför raden self.mines=mines så sätter du mines till nånting. Först då blir den definierad.
i vilken rad? :)
På rad 109 står det play_game() indenterat som att funktionsanropet tillhör klassen Grid. Ta bort den raden. Skapa istället ett objekt Grid som du sen använder för att anropa funktionen play_game() i klassen Grid.
Aerius skrev:På rad 109 står det play_game() indenterat som att funktionsanropet tillhör klassen Grid. Ta bort den raden. Skapa istället ett objekt Grid som du sen använder för att anropa funktionen play_game() i klassen Grid.
Förlåt, nu är jag säkert jättekorkad. Men jag hänger inte med, då ska jag ha
class grid(object):
def ___init___(grid):
play_game()
:S eller?
mrlill_ludde skrev:Aerius skrev:På rad 109 står det play_game() indenterat som att funktionsanropet tillhör klassen Grid. Ta bort den raden. Skapa istället ett objekt Grid som du sen använder för att anropa funktionen play_game() i klassen Grid.
Förlåt, nu är jag säkert jättekorkad. Men jag hänger inte med, då ska jag ha
class grid(object):
def ___init___(grid):
play_game()
:S eller?
Det gör ingenting att ha fel :) Men nej, du ska inte skriva så heller. Du ska inte göra ett anrop till funktionen play_game i klassen Grid. Gör som dom gjort i exemplet. Först skriver du klassen. Sen skapar du ett objekt av klassen och använder objektet för att anropa metoden play_game. Du kanske behöver läsa på skillnaden på klass - objekt samt funktion - metod. En klass är en beskrivning av objektet. I programmet skapas så många objekt av en klass som behövs. En metod är en funktion definierad i en klass. Jag ser nu att jag var otydlig i det jag skrev. Det jag menade var skapa ett objekt av klassen Grid och använd det objektet att anropa metoden play_game.
Aerius skrev:mrlill_ludde skrev:Aerius skrev:På rad 109 står det play_game() indenterat som att funktionsanropet tillhör klassen Grid. Ta bort den raden. Skapa istället ett objekt Grid som du sen använder för att anropa funktionen play_game() i klassen Grid.
Förlåt, nu är jag säkert jättekorkad. Men jag hänger inte med, då ska jag ha
class grid(object):
def ___init___(grid):
play_game()
:S eller?
Det gör ingenting att ha fel :) Men nej, du ska inte skriva så heller. Du ska inte göra ett anrop till funktionen play_game i klassen Grid. Gör som dom gjort i exemplet. Först skriver du klassen. Sen skapar du ett objekt av klassen och använder objektet för att anropa metoden play_game. Du kanske behöver läsa på skillnaden på klass - objekt samt funktion - metod. En klass är en beskrivning av objektet. I programmet skapas så många objekt av en klass som behövs. En metod är en funktion definierad i en klass. Jag ser nu att jag var otydlig i det jag skrev. Det jag menade var skapa ett objekt av klassen Grid och använd det objektet att anropa metoden play_game.
G = new grid()
G.play_game()
Eller? :$ (hänger inte riktigt med)
Ja, precis sådär :) Fast rätt. Sådär skapar man inte ett objekt utifrån en klass en python. Du missade även parametrarna till __init__() funktionen i klassen Grid. Felmeddelandet försvinner om du får till det där.
Aerius skrev:Ja, precis sådär :) Fast rätt. Sådär skapar man inte ett objekt utifrån en klass en python. Du missade även parametrarna till __init__() funktionen i klassen Grid. Felmeddelandet försvinner om du får till det där.
Hmm, förlåt men jag hänger inte med alls. Kan du inte visa? så kan jag ställa fråga?
Följ exemplet du visade i tråden med class Person. Hur man skapar ett objekt och initierar det med värden är så basic så det måste du komma på själv hur det fungerar, jag tänker inte visa hur klassen Grid ska se ut för att fungera korrekt. Starta en python interpreter och testa. Läs literaturen tills du får till det. Lycka till. Python är ett väldigt bra nybörjarspråk. Roligt är det också.
Aerius skrev:Följ exemplet du visade i tråden med class Person. Hur man skapar ett objekt och initierar det med värden är så basic så det måste du komma på själv hur det fungerar, jag tänker inte visa hur klassen Grid ska se ut för att fungera korrekt. Starta en python interpreter och testa. Läs literaturen tills du får till det. Lycka till. Python är ett väldigt bra nybörjarspråk. Roligt är det också.
mjaa, men förstår inte hur jag ska koppla ihop
kod1:
class grid(object):
def ___init___(grid):
play_game()
med kod2:
G = new grid()
G.play_game()
så kanske något med( Om man då kombinerar dom)
G = new.grid(object):
def ___init___(grid):
G.play_game()
eller?
Aerius skrev:Följ exemplet du visade i tråden med class Person. Hur man skapar ett objekt och initierar det med värden är så basic så det måste du komma på själv hur det fungerar, jag tänker inte visa hur klassen Grid ska se ut för att fungera korrekt. Starta en python interpreter och testa. Läs literaturen tills du får till det. Lycka till. Python är ett väldigt bra nybörjarspråk. Roligt är det också.
Om min ovanstående kod: För jag trodde problemet är att i python använder man inte ”new” för att skapa objekt, samt antalet (och typen av) anropsparametrar måste matcha antal och typen av formella parametrar. Närmare klassen grid kräver två parametrar i metoden __init__ men vid skapade av grid (näst sista raden i bifogad fil) saknas två parametrar.
Så Aeuris, vill du supersuperduper gärna visa hur koden isåfall skulle se ut?