NemProgrammering.dk logo

OOP klasser

Lær Python programmering » OOP klasser # 11
Inkluderet:
Livstidsadgang
27 videolektioner
7 timers undervisning
Stil spørgsmål
Kursusbevis

Information om denne video

Underviser: Simon Rotendahl   Video: 19:29   Lektion nr. 11 af 27

Min helt egen type!

Vi har snakket om typer, og nu skal vi til klasser. Det kan blive forvirrende, da klasser faktisk er typer, og typer er klasser, det er en længere og unødvendig forklaring, så tænk på klasser og typer som det samme. Vi bruger klasser i objektorienteret programmering (OOP). OOP er et paradigme, og et paradigme er en samling af kutymer. Tankegangen er at dele ens kode op i objekter, og essensen af programmet er interaktionen mellem objekterne. OOP bliver meget brugt i applikationsdesign, da der er mange knapper, sliders osv. som så er objekter, og vi kan kode den adfærd.

En klasse er, som sagt, en type. Strenge, er en klasse, integers er en klasse. Vi skal nu lære at lave vores egen. Du kan tænke på en klasse som byggetegningen til et objekt. Når du laver et objekt fra en klasse, kaldes det at du ‘instantiere’, det kommer fra at et objekt fra en klasse, kaldes en instans af klasse.

I næste video ser vi videre på OOP.

Spørgsmål og kommentarer

Kun medlemmer med adgang til dette kursus kan stille spørgsmål og kommentere. Bliv medlem her!

  • Dorte G. siger:

    Hej,
    Jeg får en fejlbesked ved Fido = Animal(“dog”, “pug”, “female”)
    TypeError: Animal() take no argument.

    Ellers ligner min kode nøjagtig din, til og med linje 14.

    VH Dorte

    1. Simon R. siger:

      Hej Dorte,

      Vil du lige prøve at checke om der er to underscores i din init altså at der står __init__ og ikke _init_, det er nemlig den mest typiske fejl. Hvis det ikke lige er det vil du så prøve at kopiere din kode ind på linket her og sende det som en kommentar, så kan jeg lige se det lidt bedre :)

      https://pastebin.com/

      Mvh.
      Simon

      1. Dorte G. siger:

        Yes tak for det – det virkede :)

        1. Simon R. siger:

          Godt at høre, det var så lidt :)

  • Rene M. siger:

    har lige prøvet at gå lidt videre …

    https://pastebin.com/FfJS9siS

    Dette giver mig denne fejl ,,, GRRRR ;o)

    SyntaxError: invalid syntax
    PS C:\Users\rmlas\Desktop> python .\class.py
    File “.\class.py”, line 10
    def.speak(self):

    1. Simon R. siger:

      Så både det med farven af self og fejlen kommer af at du skriver def.speak…, du vil ikke have et punktum mellem de to altså du vil have def speak ikke def.speak. Det er først når du bruger funktionen at du vil bruge det punktum. Så du kan se når jeg laver Fido, så er Fido en instans af klassen, og når man vil bruge en funktion fra klassen på en instans så bruger man . altså Fido.speak.

      Jeg håber det hjalp, OOP er ret svært at forstå i starten, så det tager lidt tid af få hovedet omkring det :)

  • Rene M. siger:

    Hej Simon,
    hvorfor får jeg ikke farvet self.

    det er som om jeg ikke får init klassen.

    https://pastebin.com/yFJJ7zkk

    mvh Renè

  • Nicky F. siger:

    Hej Simon,
    Jeg har undret mig lidt over at du ofte skriver et stort bogstav midt i et ord, når du f.eks definerer en variabel eller lign.
    I denne her video skrev du “aLive”. Hvad er grunden til at man/du blander store og små bogstaver til tider? Er det en speciel kodekultur eller lign.?

    Jeg har selv “kaget” rundt i det. Hvis jeg har defineret en variabel eller lign. med et stort bogstav, glemmer jeg det senere og så får jeg en fejl. Så jeg er begyndt at skrive alt med småt. Men gør jeg mig selv en bjømetjeneste?
    Mvh. Nicky

    1. Simon R. siger:

      Godt spørgsmål. Jeg bruger noget man kalder camelcase, det er en konvention for at skrive variable og funktionsnavne. Hvis du f.eks gerne vil lave en liste af dyr, så kan du ikke skrive følgende pga. Mellemrum
      Liste af dyr = []

      Derfor skriver jeg i stedet
      listeAfDyr = []

      Det er camelcase, du erstatter hvert mellemrum med et stort bogstav i ordet efter. Nogen bruger _ i stedet, så der ville man skrive
      Liste_af_dyr = []

      Men det gør end navne længere, hvilket jeg ikke er så glad for.

      Lige “aLive” I denne video er faktisk en “fejl” det bør jeg bare skrive alive. Husk dog at det bare er en konvention, det er udelukkende bare for at have lidt ekstra struktur, der er ikke nogen teknisk fordel ved det. Du kan se mere på Wikipedia her
      https://en.m.wikipedia.org/wiki/Camel_case

      Mvh.
      Simon

  • Allan C. siger:

    Hej,

    Skal det være ordet “self” eller kan man selv vælge et vilkårligt ord hvis man bare bruger det hele vejen igennem?

    Hilsen Allan

    1. Simon R. siger:

      Hej Allan

      Godt spørgsmål, det burde jeg lige have dækket i videoen. Men nej det behøves ikke være self, det er udelukkende en kutyme, så det er nemmere for andre at læse din kode, så længe (som du selv siger) man er konsistent om brugen af det. Mange bruger ordet ‘this’, jeg brugte selv ordet ‘me’ da jeg lærte det, så hvis et andet ord giver mere mening for dig, så bruger du bare det :)