Grundlagen Klassen

In [1]:
class Ort():
    """ Klasse Ort"""
    sm = 1.852 # Definition Seemeile 1.852 km

print(Ort.sm)
1.852
In [2]:
ort1 = Ort()
print(ort1)
<__main__.Ort object at 0x7f2c50140048>
In [3]:
ort2 = Ort()
print(ort2)
<__main__.Ort object at 0x7f2c5011aeb8>
In [4]:
print(ort1.sm)
print(ort2.sm)
1.852
1.852
In [5]:
Ort.sm = 0
print(ort1.sm)
print(ort2.sm)
0
0
In [6]:
ort1.sm = 0.9
print(ort1.sm)
print(ort2.sm)
0.9
0

Instanziierung

In [7]:
class Ort():
    """Klasse Ort mit Eigenschaften
        Name des Orts
        Lage des Orts über die Koordinaten (Nordkoordinate, Ostkoordinate)
    """
    
    def __init__(self, name, nord, ost):
        self.name = name
        self.nord = nord
        self.ost = ost
In [8]:
ort1 = Ort("TCW",48.86457, 10.51463)
print("{} liegt auf {} Nord und {} Ost".format(ort1.name,ort1.nord,ort1.ost))
TCW liegt auf 48.86457 Nord und 10.51463 Ost
In [9]:
ort2 = Ort("Bahnhof Nördlingen",48.8508, 10.4978)
print("{} liegt auf {} Nord und {} Ost".format(ort2.name,ort2.nord,ort2.ost))
Bahnhof Nördlingen liegt auf 48.8508 Nord und 10.4978 Ost

Instanzvariable ist in Python mit "self" festgelegt

Bei der Erstellung einer Instanz (Objekt einer Klasse) wird die Instanzvariable (self) zum Rückgabewert der Instanziierung der Klasse und damit für jede Instanz ein anderer Wert.

Klassenmethoden

Pythagoras

Satz des Pythagoras

a² + b² = c²

1/60 Breitengrad = 1 Seemeile = 1852 m = 1.852 km

60 * 1.852 = 111.12 km

60 1.852 cos((b1+b2)/2)

In [14]:
import math


class Ort():
    """Klasse Ort mit Eigenschaften
    Attribute:
       Name des Orts
       Koordinaten des Orts
    Methoden:
       entfernung
    """
    sm = 1.852 # Definition Seemeile 1.852 km
    
    def __init__(self,name,nord,ost):
        self.name = name
        self.nord = nord
        self.ost = ost
        
    def entfernung(self,zweiterOrt):
        längebreitengrads = 60 * self.sm
        längelängengrads = 60 * self.sm * math.cos(math.radians((self.nord+zweiterOrt.nord)/2))
        a2 = ((zweiterOrt.ost-self.ost)*längelängengrads)**2
        b2 = ((zweiterOrt.nord-self.nord)*längebreitengrads)**2
        return math.sqrt(a2+b2)
        
In [15]:
ort1 = Ort("TCW",48.86457, 10.51463)
print("{} liegt auf {} Nord und {} Ost".format(ort1.name,ort1.nord,ort1.ost))
TCW liegt auf 48.86457 Nord und 10.51463 Ost
In [16]:
ort2 = Ort("Bahnhof Nördlingen",48.8508, 10.4978)
print("{} liegt auf {} Nord und {} Ost".format(ort2.name,ort2.nord,ort2.ost))
Bahnhof Nördlingen liegt auf 48.8508 Nord und 10.4978 Ost
In [17]:
ort1.entfernung(ort2)
Out[17]:
1.9634749351569114
In [18]:
ort2.entfernung(ort1)
Out[18]:
1.9634749351569114