15 svar
657 visningar
mrlill_ludde 1047 – Fd. Medlem
Postad: 5 mar 2019 18:52

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)

Laguna 28536
Postad: 5 mar 2019 20:39

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. 

mrlill_ludde 1047 – Fd. Medlem
Postad: 5 mar 2019 20:48
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)

Laguna 28536
Postad: 6 mar 2019 04:23
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"? 

mrlill_ludde 1047 – Fd. Medlem
Postad: 6 mar 2019 09:39 Redigerad: 6 mar 2019 09:58
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

https://codeshare.io/5vdZLn

 

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):

Laguna 28536
Postad: 6 mar 2019 10:15

Två rader nedanför raden self.mines=mines så sätter du mines till nånting. Först då blir den definierad.

mrlill_ludde 1047 – Fd. Medlem
Postad: 6 mar 2019 10:19
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? :)

Aerius 504 – Fd. Medlem
Postad: 6 mar 2019 18:49

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.

mrlill_ludde 1047 – Fd. Medlem
Postad: 6 mar 2019 19:33
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?

Aerius 504 – Fd. Medlem
Postad: 6 mar 2019 20:42
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.

mrlill_ludde 1047 – Fd. Medlem
Postad: 7 mar 2019 12:33 Redigerad: 7 mar 2019 13:50
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)

Aerius 504 – Fd. Medlem
Postad: 7 mar 2019 18:41

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.

mrlill_ludde 1047 – Fd. Medlem
Postad: 8 mar 2019 08:06
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? 

Aerius 504 – Fd. Medlem
Postad: 8 mar 2019 17:49

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å.

mrlill_ludde 1047 – Fd. Medlem
Postad: 8 mar 2019 17:59
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?

mrlill_ludde 1047 – Fd. Medlem
Postad: 8 mar 2019 19:37
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.

 

Aeuris, vill du supersuperduper gärna visa hur koden isåfall skulle se ut?

Svara Avbryt
Close