Variable dienen der temporären oder dauerhaften Speicherung von Daten [einer Klasse] oder eines Objektes.
In einer Klassendefinition treten Variable unterschiedlicher Art auf. Dabei geht es hier nicht um den Datentyp, in dem sie sich natürlich auch unterscheiden können, sondern um die strukturellen Unterschiede:
Attribut lokale Variable Parameter Klassenvariable jeweils bei der Definition markiert
class VariablenDemoKlasse(object):
"""Demonstration des Einsatzes von
Instanzvariablen und Klassenvariablen"""
# Klassenvariable definieren
__zaehlweite = 1
__instanzenzaehler = 0
def __init__(self,
startwert = 0):
"""Konstruktor mit vordefinierten Parametern"""
self.__x = startwert
self.__dx = VariablenDemoKlasse.__zaehlweite
VariablenDemoKlasse.__instanzenzaehler += 1
self.__instanznummer = VariablenDemoKlasse.__instanzenzaehler
# Klassenmethode zum Setzen der Zählweite für alle nachfolgend erzeugten Objekte
@staticmethod
def SetzeZaehlweite(neueZaehlweite):
"""Definiert die Zählweite für alle neuen Instanzen neu."""
VariablenDemoKlasse.__zaehlweite = neueZaehlweite
def GibX(self):
"""Get-Methode fuer den x-Wert [Stand]"""
return self.__x
def GibDX(self):
"""Get-Methode fuer die Zaehlweite"""
return self.__dx
def GibInstanznummer(self):
"""Get-Methode fuer die Instanznummer"""
return self.__instanznummer
def Zaehle(self):
"""Instanzmethode zum Zählen"""
self.__x += self.__dx
def ZeigeStand(self):
"""Instanzmethode zur Ausgabe mit Angabe der Instanznummer"""
ausgabe = 'Instanz: ' + str(self.GibInstanznummer())
ausgabe += ' von ' + str(VariablenDemoKlasse.__instanzenzaehler)
ausgabe += ' hat Stand: ' + str(self.__x)
print ausgabe
Dazu die Testaufrufe:
zaehler_1 = VariablenDemoKlasse() zaehler_1.ZeigeStand() zaehler_1.Zaehle() zaehler_1.ZeigeStand() for i in xrange(9): zaehler_1.Zaehle() zaehler_1.ZeigeStand() zaehler_2 = VariablenDemoKlasse(50) zaehler_2.ZeigeStand() zaehler_2.Zaehle() zaehler_2.ZeigeStand() zaehler_2.Zaehle() zaehler_2.ZeigeStand() zaehler_3 = VariablenDemoKlasse() zaehler_3.ZeigeStand() zaehler_3.Zaehle() zaehler_3.ZeigeStand() VariablenDemoKlasse.SetzeZaehlweite(100) zaehler_4 = VariablenDemoKlasse() zaehler_4.ZeigeStand() zaehler_5 = VariablenDemoKlasse(1000) zaehler_5.ZeigeStand() zaehler_1.Zaehle() zaehler_1.ZeigeStand() zaehler_2.Zaehle() zaehler_2.ZeigeStand() zaehler_3.Zaehle() zaehler_3.ZeigeStand() zaehler_4.Zaehle() zaehler_4.ZeigeStand() zaehler_5.Zaehle() zaehler_5.ZeigeStand() zaehler_1.Zaehle() zaehler_1.ZeigeStand() zaehler_2.Zaehle() zaehler_2.ZeigeStand() zaehler_3.Zaehle() zaehler_3.ZeigeStand() zaehler_4.Zaehle() zaehler_4.ZeigeStand() zaehler_5.Zaehle() zaehler_5.ZeigeStand()
Sie liefern die Ausgabe:
Instanz: 1 von 1 hat Stand: 0 Instanz: 1 von 1 hat Stand: 1 Instanz: 1 von 1 hat Stand: 10 Instanz: 2 von 2 hat Stand: 50 Instanz: 2 von 2 hat Stand: 51 Instanz: 2 von 2 hat Stand: 52 Instanz: 3 von 3 hat Stand: 0 Instanz: 3 von 3 hat Stand: 1 Instanz: 4 von 4 hat Stand: 0 Instanz: 5 von 5 hat Stand: 1000 Instanz: 1 von 5 hat Stand: 11 Instanz: 2 von 5 hat Stand: 53 Instanz: 3 von 5 hat Stand: 2 Instanz: 4 von 5 hat Stand: 100 Instanz: 5 von 5 hat Stand: 1100 Instanz: 1 von 5 hat Stand: 12 Instanz: 2 von 5 hat Stand: 54 Instanz: 3 von 5 hat Stand: 3 Instanz: 4 von 5 hat Stand: 200 Instanz: 5 von 5 hat Stand: 1200
© Claus Albowski