init r en konstruktor.
Den kallas frst nr du skapar objektet fr att initiera saker.
self anvnds fr att stta fltvariabler i objektet. I python behver du inte deklarera dessa, men hade det varit t.ex. java s hade du gjort.
Kod:
public class Kakmonster {
private String namn;
public Kakmonster(String namn) {
this.namn = namn;
}
...
}
Det r lite tydligare vad som hnder hr. Du har en variabel namn som skickas in i konstruktorn (i java heter den inte init utan namnet p klassen), och fr att skilja mellan namn som ligger i objektet och namn som variabel i konstruktorn anvnds this. This r samma sak som self i python.
I java behver du inte anvnda this heller, nedan r t.ex. helt okej:
Kod:
public class Kakmonster {
private String kakNamn;
public Kakmonster(String namn) {
kakNamn = namn;
}
...
}
I python mste du anvnda self dock. Self skickas med i alla anrop till metoder p objekt, precis som this skickas med i smyg i java. I python s r self synlig, du mste deklarera den som en parameter i dina metoder.
This och self refererar till objektet som du arbetar med.
Du kan anropa metoder "p dej sjlv" mha. self t.ex. genom self.t_kaka() precis som du kan gra person.t_kaka() nr du har tilldelat instansen till variabeln person.
Du frstr, init retunerar "self" nr den r klar. Init r egentligen metoden Kakmonster(String namn) som du anropar nedan fr att skapa en instans av Kakmonster. Self skickas med implicit, precis som den skickas med implicit nr du gr person.t_kaka()
Egentligen s gr python t_kaka(person) nr du skriver person.t_kaka(). Person pekar p objektet, vilket d blir self inne i metoden.
Sorry om jag krnglade till det nu, haha.
Kakmonster.kakburk r ett specialfall. Dr refererar du till kakburk som ligger i klassen och inte i instansen.
I java hade man deklarerat kakburk som static. Du fr lsa p skillnaden mellan instansvariabler och statiska variabler i klasser. Instansvariabler finns med i varje instans du skapar, varje "Kakmonster" objekt t.ex., men kakburk r delad mellan alla kakmonster och ligger i klassen inte i dom enskilda kakmonster objekten.