Presentation laddar. Vänta.

Presentation laddar. Vänta.

1 Föreläsning 8 Mer om klasser och objektorientering.

Liknande presentationer


En presentation över ämnet: "1 Föreläsning 8 Mer om klasser och objektorientering."— Presentationens avskrift:

1 1 Föreläsning 8 Mer om klasser och objektorientering

2 2 self Self är en variabel som refererar från instansen till instansen själv.

3 3 Speciella metoder Vid jämförelse av två instanser av samma klass anropas: __cmp__(self, other) Ska returnera negativt tal om self other.

4 4 Privata variabler Om en klass vill dölja en variabel för andra klasser kan man göra variabeln ”privat”: class A(object): def __init__(self, mySecret): self.__mySecret = mySecret a = A(”I love Sofie”) print a.mySecret ??? Error ??? print a.__mySecret ??? Error ??? print a._A__mySecret ger: I love Sofie

5 5 Privata metoder Om en klass vill dölja en metod för andra klasser kan man göra metoden ”privat”: class A(object): ….. def __mySecretMethod(self): print ”I love candy!” a = A(”I love Sofie”) a.mySecretMethod() ??? Error ??? a.__mySecretMethod() ??? Error ??? a._A__mySecretMethod() ger: I love candy!

6 6 Privata variabler och metoder En variabel eller metod som börjar med två understreck är ”privat”. För att komma åt variabeln/metoden inom klassen används namnet (med de två understrecken) som vanligt. Utanför klassen skall variabeln/metoden egentligen inte användas, men den kan kommas åt genom att använda ett understreck och klassens namn, tex _A, som prefix.

7 7 Överlagring av metoder Överlagring av en metod är då man definierar om en metod i en klass som klassen har ärvt från superklassen.

8 8 Exempel class Parallellogram(object): kant1 = None basKant = None hojd = None def __init__(self, a, b, h): self.kant1 = a self.basKant = b self.hojd = h def area(self): return self.hojd * self.basKant def omkrets(self): return 2 * (self.kant1 + self.basKant)

9 9 Exempel class Rektangel(Parallellogram): def __init__(self, a, b): super(Rektangel, self).__init__(self, a, b, b) def area(self): return self.kant1 * self.basKant class Kvadrat(Rektangel): def __init__(self, a): super(Rektangel, self).__init__(self, a, a, a)

10 10 Utökning Man utökar en subklass när man definierar nya metoder i en subklassen som inte är definierade i superklassen.

11 11 Polymorfism Polymorfism är möjligheten att kunna använda samma attribut i två eller fler objekt av olika klasser och få olika resultat.


Ladda ner ppt "1 Föreläsning 8 Mer om klasser och objektorientering."

Liknande presentationer


Google-annonser