-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathLesson7_OOP.py
71 lines (51 loc) · 2.84 KB
/
Lesson7_OOP.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
class Player():
def __init__(self, first_name, last_name, height_cm, weight):
self.first_name = first_name
#.first_name ist eine variable, die sinnvollerweise gleich heißt wie oben in der eingabe - könnte auch anders heißen
self.last_name = last_name
self.height_cm = height_cm
self.weight = weight
# selbst geschriebene methode: wenn auf dieser ebene eine funtkion erstellt wird, kiommt diese zu allen objekten automatisch hinzu gleicher init wie oben
def weight_to_lbs(self):
pounds = self.weight * 2.234
return pounds
# in klammer steht player --> golfplayer ist child von player
class GolfPlayer(Player):
#initialisierungsmethode
def __init__(self, first_name, last_name, height_cm, weight, points, handicap, tournaments): #self ist das neue objekt, dass auf basis dieses models/diser sturktur erstellt wird (zb lukas_golfobj)
# Vererbung: super() greift auf die elternklasse zurück (-->"Player")
super().__init__(first_name=first_name, last_name=last_name, height_cm=height_cm, weight=weight)
self.points = points
self.handicap = handicap
self.tournaments = tournaments
#methoden können sogar schon im init angewendet werden (wenn weight schon darüber definiert wurde)
self.weight_in_pounds = self.weight_to_lbs()
class FootballPlayer(Player):
def __init__(self, first_name, last_name, height_cm, weight, goals, red_cards, yellow_cards):
super().__init__(first_name=first_name, last_name=last_name, height_cm=height_cm, weight=weight)
self.goals = goals
self.red_cards = red_cards
self.yellow_cards = yellow_cards
############ Was kann ich jetzt mit diesen Objekten machen??
#objekte definieren
lukas_golfobj = GolfPlayer(first_name="lukas", last_name="eggler", height_cm=190, weight=90, points=123, handicap=5, tournaments=20)
petra_golfobj = GolfPlayer("petra", "maier", 170, 65, 133, 2, 33)
#eigenschaften von objekten ausprinten
print(lukas_golfobj.handicap)
#LISTE VON OBJEKTEN ERSTELLEN (=90% der use cases)
golf_players = [lukas_golfobj, petra_golfobj]
#... und die elemente in der liste durchgegen.
for player in golf_players:
print (f"Name: {player.first_name}, Handicap: {str(player.handicap)}")
#methode aus der klasse anwenden
print(petra_golfobj.weight_to_lbs())
print (petra_golfobj.weight_in_pounds)
ronaldo = FootballPlayer("christiano", "ronaldo", 190, 80, 44, 2, 3)
print(ronaldo.red_cards)
#.sort kann man auf arrays anwenden
golf_players.sort(key=lambda x: x.height_cm, reverse=False)
#bei array aus objekten kann die sort-funktion nicht direkt auf eigenschaften zugreifen (das kann sie nur bei arrays)
# x repräsenteirt den kompletten datensatz
#gilt auch für ein Array in dem Dictionarys drin sind
for player in golf_players:
print ("sortiert: "+ player.first_name + player.last_name)