Seite 1 von 1

Global das Verhalten aller Klasseninstanzen verändern

Verfasst: Freitag 22. Dezember 2006, 11:55
von alban
Hallo,

für eine Klasse, die ich als Datentyp verwende, möchte ich die Möglichkeit haben, z.B. die Funktion der __mult__() Methode für alle Instanzen der Klasse zu verändern.

Also wenn ich z.B. einen Algorithmus auf Basis dieser Klasse erstellt habe, soll es möglich sein, die Funktion der Multiplikation durch einfache Konfiguration zu verändern.

Meine erste Idee war eine globale Variable dafür zu nehmen, aber da gibt es doch bestimmt eine bessere Möglichkeit in Python?

Danke für die Hilfe.

Gruß,

Alban

Re: Global das Verhalten aller Klasseninstanzen verändern

Verfasst: Freitag 22. Dezember 2006, 15:39
von BlackJack
alban hat geschrieben:für eine Klasse, die ich als Datentyp verwende, möchte ich die Möglichkeit haben, z.B. die Funktion der __mult__() Methode für alle Instanzen der Klasse zu verändern.
Also letztendlich möchtest Du die `__mul__()`-Methode der Klasse austauschen!? Dann mach doch genau das.

Code: Alles auswählen

class Viking(object):
    def _mul_a(self, other):
        print 'a'
    
    def _mul_b(self, other):
        print 'b'
    
    __mul__ = _mul_a


def main():
    eric = Viking()
    eric * 42
    Viking.__mul__ = Viking._mul_b
    eric * 42

Re: Global das Verhalten aller Klasseninstanzen verändern

Verfasst: Freitag 22. Dezember 2006, 16:19
von alban
Danke.

Das hilft!

Alban