diff --git a/Python-Object-Oriented-Programming.md b/Python-Object-Oriented-Programming.md index 9550872..76c051c 100644 --- a/Python-Object-Oriented-Programming.md +++ b/Python-Object-Oriented-Programming.md @@ -75,4 +75,50 @@ Kør filen, og se hvad der sker. Rumfang: 1000 > ``` - \ No newline at end of file +Som vi kan se, virker skriptet sådan set udmærket, med undtagelse af, at arealet bliver udskrevet. Det har vi ikke bedt om! +Dette bringer os til emnet **import** og kontrol af hvad der sker, når vi kører et skript. +Python afvikler al kode, i en importeret fil, ligesom hvis den importerede fil var blevet kørt direkte. Dette giver problemer, da den der importerer en fil, ikke har kontrol over hvilken kode der bliver afviklet. +Der findes flere måder at klare dette på. Den vigtigste er, at sikre, at kun hvis en fil køres direkte f.eks. +```console +> python firkant.py + Arealet er: 100 +> +``` +Dette gøres ved at introducere en specifik program struktur. +```python +if __name__ == "__main__": +``` +Dette medfører, at man sikrer, at kun hvis programmet køres direkte, eksekveres den efterfølgende kode. +Grundreglen er, at **kun** definitioner (def(), class() samt variable må laves herover. +Al kode, som vil blive udført direkte, skal ligge i den blok. +Vi gør dette ved, at ændre *"firkant.py"* således. +```python +class Firkant: + def __init__(self, lg: int, br: int): + self.laengde = lg + self.bredde = br + + def areal(self): + return self.laengde * self.bredde + +print("Værdien af '__name__' er:", __name__) # Vi udskriver her, hvad værdien af "__name__" er. + +if __name__ == "__main__": + min_firkant = Firkant(10, 10) + print("Arealet er:", min_firkant.areal()) +``` +Når vi kører *firkant.py* direkte, får vi dette. +```console +> python firkant.py + Værdien af '__name__' er:" __main__ + Arealet er: 100 +> +``` +Som vi kan se, køres koden, i "if __name__" blokken. +Hvis vi så kører kube.py istedet. +```console +> python kube.py + Værdien af '__name__' er: firkant + Rumfang: 1000 +> +``` \ No newline at end of file