Permalänk

Python frågor!

Jag har frågat och frågat men får inget riktigt bra svar om vad RETURN innebär i python..

När man skapar en klass och sedan metoderna som använder man return ibland och ibland inte.. VARFÖR?
Men i funktioner gör man alltid en return-sats. VARFÖR?
Vad är instansvariabler?

Jag har sökt på nätet men inget förklarar det så att jag känner att det sitter i benmärgen..
Ni kanske kan

Thanks

Permalänk
Medlem

return returnerar ett värde eller variabel. Krångligare är det inte. I just pyton måste alla funktioner returnera något. Om du inte specar det så returnerar den None. I metoder finns inget krav på att returnera utan du gör det där det behövs.

Permalänk

Jag kan förmodligen inte förklara det bättre än de sidor du redan läst på, men jag försöker beskriva det kortfattat och enkelt. För det är enkelt

En funktion eller en metod använder return för att kunna kommunicera någon form av resultat tillbaka till anroparen av funktionen. Det finns inte alltid någon poäng att göra det. T.ex. om det är en enkel funktion som i teorin inte kan misslyckas.

Om man har en funktion eller metod connect(addr, port) så kan man tänka sig att den returnerar ett connectionobjekt om den lyckas, och inget om den misslyckas (värdet None, return None). Men i Python är det nog vanligast att man kastar ett exception om något misslyckas.

Om det är en funktion som beräknar något, så kan man använda return för att skicka tillbaka resultatet av uträkningen. Funktioner behöver inte (uttryckligen) returnera något i Python vad jag vet.

Instansvariabler är variabler knutna till en instans. Varje instans av en klass får sin egen uppsättning av de instansvariabler som klassen definierar. Enkelt exempel: Tänk dig en klass Person med instansvariabeln name. Varje instans av klassen kommer att kunna ha ett eget värde på name-variabeln, vilket är lämpligt för en sån klass.

Om du fortfarande inte förstår, säg till. Fast då kanske någon annan får försöka.

Ett tips är att du experimenterar lite själv, med både return och instansvariabler. Det behöver inte ta lång tid.

Permalänk

Right men jag känner mig så osäker när jag ska använda return-satsen och när jag inte ska använda den.

Permalänk

Man skulle kunna säga att en instans är ett annat namn på objekt? och att "instantiated " är som att säga skapa ett objekt?
Då måste det innebära att instance method = objekt metod?

Permalänk

Om vi säger såhär : vi skapar en klass med namnet Pappa sedan en metod med namnet Mamma som har parametrarna self och barn.

Varför skriver man ibland self.barn = barn ?

Permalänk
Medlem
Skrivet av Quantum-CPU:

Om vi säger såhär : vi skapar en klass med namnet Pappa sedan en metod med namnet Mamma som har parametrarna self och barn.

Varför skriver man ibland self.barn = barn ?

Python Och Jag - LinuxWiki.se

Permalänk
Medlem
Skrivet av Quantum-CPU:

Man skulle kunna säga att en instans är ett annat namn på objekt? och att "instantiated " är som att säga skapa ett objekt?
Då måste det innebära att instance method = objekt metod?

En instans är bara ett annat ord för objekt. Tänk dig att en klass är en ritning som beskriver hur du konstruerar en viss typ av objekt. När du instantierar en klass så använder du då ritningen för att konstruera ett nytt objekt av den klassen, och detta objekt kallas därför en instans av klassen.

Varje instans får då en egen uppsättning av variabler, som Antonovskij förklarade, och dessa kallas instansvariabler. Men man kan även ha klassvariabler som alla instanser av en viss klass delar på.

Permalänk

När flera objekt som även kan kallas för instanser delar på en variabel då kallar man dem för klassvariabler?

Fattar dock inte " Varje instans får då en egen uppsättning av variabler, som Antonovskij förklarade, och dessa kallas instansvariabler " .. Kan inte ni ta ett exempel och peka ut vad som är vad? Vore schysst

Permalänk
Medlem

Tänk dig att du har en klass för bilar.
Du skapar då två klassobjekt, bil1 och bil2.
Sedan vill du välja märke för båda bilarna med hjälp av bilarnas variabler, som kommer från klassen.
Om du ändrar märke på bil1, så ändras inte märket på bil2..