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