Update Python Object Oriented Programming

2025-03-18 08:17:47 +01:00
parent c33c499677
commit 458760617e

@@ -75,4 +75,50 @@ Kør filen, og se hvad der sker.
Rumfang: 1000
>
```
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
>
```