[Python-de] Klassenmethoden

Wagner, Frank Frank.Wagner at wika.com
Fr Jul 19 15:23:57 CEST 2013


Hallo ich hab folgendes Problem:

Ich möchte einige Methoden einer Klasse verwenden ohne zuvor eine Instanz der Klasse anlegen zu müssen.

Wie ich in Erfahrung gebracht habe ist dies mit dem Schlüsselwort @classmethod vor der eigentlichen Methode möglich wenn diese Methode ihre Zugriffe über cls und nicht self referenziert.

Offensichtlich ist es mir allerdings nicht möglich eine Methode der Klasse hiermit zu verwenden die sich auf eine Instanz bezieht also mit def foo(self, ...)
erstellt ist?

Gibt es eine Möglichkeit dies zu lösen oder muss ich jetzt alle Methoden der Klasse als Klassenmethoden ausweisen und cls statt self verwenden? Hierbei würde es allerdings wenig Sinn machen noch eine Klasse zu definieren, da könnte ich ja auch alle Methoden direkt in ein modulfile schreiben.

Hier ein kleines Beispiel was ich meine:

<<
class ModulTest():
    ''' Kurze Beschreibung der Klasse
        und ihrer Mehtoden
    '''
    Liste= []
    String = "0"
    fl_val = 0.0
    int_val = 0

    def __init__(self):
        ''' Kurze Beschreibung der Funktion
            Kurze Beschreibung der Argumente
            Kurze Beschreibung der Rueckgabewerte
        '''
    pass

    def verarbeite(self, Zahl):
        self.String = str(Zahl)
        for i in self.String:
            self.Liste.append(i)

    @classmethod
    def getOutput(cls, zahl):
        cls.verarbeite(zahl)
        print cls.String

>>

Aufgerufen soll es wie folgt werden:

>From modultest import ModulTest as mt
mt.getOutput(12)

Schon jetzt vielen Dank für Eure Ratschläge


Gruß

Frank



--
Bevor Sie diese E-Mail ausdrucken, überlegen Sie bitte, ob dies wirklich erforderlich ist. Please think before you print.
--
WIKA Alexander Wiegand SE & Co. KG
Alexander-Wiegand-Straße 30 - 63911 Klingenberg - Germany
Kommanditgesellschaft: Sitz Klingenberg - Amtsgericht Aschaffenburg HRA 1819
Komplementärin: WIKA Verwaltungs SE & Co. KG - Sitz Klingenberg -
Amtsgericht Aschaffenburg HRA 4685
Komplementärin: WIKA International SE - Sitz Klingenberg -
Amtsgericht Aschaffenburg HRB 10505
Vorstand: Alexander Wiegand
Vorsitzender des Aufsichtsrats: Dr. Max Egli
Telefon: (09372) 132-0
Internet: www.wika.com
-- 
The information contained in this E-Mail and any attached files are strictly confidential and may be subject to legal privilege. If you are not the intended recipient, his representative or the person responsible for delivering the message to the intended recipient, be advised that you have received this message in error and that any dissemination, copying or use of this message or attachment is strictly forbidden, as is the disclosure of the information therein. If you have received this E-Mail in error, please notify us immediately by E-Mail or telephone and delete this message and all its attachments subsequently. All reasonable precautions have been taken to ensure no viruses are present in this E-Mail.
-------------- nächster Teil --------------
Ein Dateianhang mit HTML-Daten wurde abgetrennt...
URL: <http://mail.python.org/pipermail/python-de/attachments/20130719/5787bd2a/attachment.html>


Mehr Informationen über die Mailingliste python-de