Update Python Object Oriented Programming
@@ -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
|
||||
>
|
||||
```
|
||||
Reference in New Issue
Block a user