Citat:
Ursprungligen postat av
SilverHermansson
Traceback (most recent call last):
File "/Users/karinhermansson/Desktop/nytttest.py", line 72, in <module>
aka(self)
NameError: name 'aka' is not defined
>>>
Det beror på att funktionen
aka och
aka1 är indenterade för långt. Man kan inte deklarera en funktion innanför en annan funktion. Sen måste du för att kunna anropa en funktion använda namnet på objektet du skapade. I ditt fall
val, alltså
val.aka(). Du ska inte skriva med self som parameter när du anropar en funktion. Den använder du bara när du skriver funktionen, för att den ska skicka med "sig själv" så att du kan använda objektets variabler.
Vill du ha lite mindre kod som kanske är lite lättare att förstå. Så kan du ta bort if-sattsen och sätta indexet av attraktionen direkt i initieringen av objektet
val. Tänk bara på att index 1 inte är först utan 0.
Kod:
val = Nojesfalt(attraktion[int(vald_attr)])
val.aka()
Sen är det snyggare om du anropar funktionen som kollar längd och ålder innanför
aka och
aka1 funktionen. Vilket gör att du slipper skriva om funktionens anropet varje gång du ska köra en attraktion. Det går naturligtvis att göra som du gjort också, men det blir mindre kod och mer lättförståeligt.