Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
gmolveau
GitHub Repository: gmolveau/python_full_course
Path: blob/master/exercices/oop/airport/solution_airport.py
306 views
1
import datetime
2
3
4
class Airport:
5
def __init__(self, name: str) -> None:
6
self.name: str = name
7
8
9
class Stopover:
10
def __init__(
11
self,
12
landing_date: datetime.datetime,
13
takeoff_date: datetime.datetime,
14
airport: Airport,
15
) -> None:
16
self.takeoff_date: datetime.datetime = takeoff_date
17
self.landing_date: datetime.datetime = landing_date
18
self.airport: Airport = airport
19
20
21
class Flight:
22
def __init__(
23
self,
24
takeoff_date: datetime.datetime,
25
landing_date: datetime.datetime,
26
takeoff_airport: Airport,
27
landing_airport: Airport,
28
) -> None:
29
self.takeoff_date: datetime.datetime = takeoff_date
30
self.landing_date: datetime.datetime = landing_date
31
self.takeoff_airport: Airport = takeoff_airport
32
self.landing_airport: Airport = landing_airport
33
self.stopovers: list(Stopover) = []
34
self.bookable: bool = True
35
36
def print_travel(self):
37
print(f"Flight from {self.takeoff_airport.name} to {self.landing_airport.name}")
38
print(f"- {self.takeoff_airport.name} : {self.takeoff_date}")
39
for stopover in self.stopovers:
40
print(
41
f"- {stopover.airport.name} : {stopover.landing_date} -> {stopover.takeoff_date}"
42
)
43
print(f"- {self.landing_airport.name} : {self.landing_date}")
44
45
46
cdg = Airport("Paris CDG")
47
amsterdam = Airport("Amsterdam")
48
oslo = Airport("Oslo")
49
helsinki = Airport("Helsinki")
50
51
flight_49 = Flight(
52
datetime.datetime(2022, 8, 20, 19, 43),
53
datetime.datetime(2022, 8, 21, 8, 57),
54
cdg,
55
helsinki,
56
)
57
58
flight_49.stopovers.append(
59
Stopover(
60
datetime.datetime(2022, 8, 20, 22, 22),
61
datetime.datetime(2022, 8, 20, 23, 23),
62
amsterdam,
63
)
64
)
65
66
flight_49.stopovers.append(
67
Stopover(
68
datetime.datetime(2022, 8, 21, 5, 5), datetime.datetime(2022, 8, 21, 6, 6), oslo
69
)
70
)
71
72
flight_49.print_travel()
73
74