statische Klasse in python

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
JonasR
User
Beiträge: 251
Registriert: Mittwoch 12. Mai 2010, 13:59

Re: statische Klasse in python

Beitragvon JonasR » Dienstag 6. Dezember 2011, 11:43

fr3sh hat geschrieben:Ich glaube ich habe mit der Hilfe eines Kollegen eben die gesuchte Lösung gefunden, eine Statische Klasse zu erzeugen. Ich komme aus der C# Ecke und mir sagt die Methode mit dem Modulen nicht wirklich zu.

Gefunden hier: http://stackoverflow.com/questions/5313364/execute-function-without-sending-self-to-it

Beispiel:

Code: Alles auswählen

class Foo(object):
    @staticmethod
    def bar():
        print "Static method called!"

Aufruf wie folgt:

Code: Alles auswählen

Foo.bar()
>> Static method called!


ciao


Was ist dadran eine statische Methode? :-/
BlackJack

Re: statische Klasse in python

Beitragvon BlackJack » Dienstag 6. Dezember 2011, 12:29

@JonasR: `Foo.bar()` ist ganz offensichtlich eine statische Methode.
JonasR
User
Beiträge: 251
Registriert: Mittwoch 12. Mai 2010, 13:59

Re: statische Klasse in python

Beitragvon JonasR » Dienstag 6. Dezember 2011, 17:53

Ich hatte jetzt eher eine Erklärung zu statischen Funktion erwartet :D Aber ich glaube ich lese einfach mal die Doku zu @staticmethod
Ich denke bei statisch an etwas unabänderbares ich denke aber ich habe was falschen im Kopf :D

Ich bin halt nicht mit statischen Dingen in Programmiersprachen vertraut.

Edit 1 Mein Sprachstil in dem Post ist ja auch schlecht :D Ich Ich Ich Ich

Edit 2 Wenn ich meine Versuche jetzt richtig interpretiert habe, ist meine Vermutung der nicht änderbaren Funktion ja doch korrekt. Wäre über eine kleine Aufklärung sehr Glücklich. :)
EyDu
User
Beiträge: 4866
Registriert: Donnerstag 20. Juli 2006, 23:06
Wohnort: Berlin

Re: statische Klasse in python

Beitragvon EyDu » Dienstag 6. Dezember 2011, 21:04

Statisch bedeutet in diesem Kontext, dass du keine Instanz vom Typ "foo" benötigst. Normalerweise würdest du die Methode so aufrufen:

Code: Alles auswählen

foo = Foo()
foo.bar()

#mit
class Foo(object):
    def bar(self):
        pass


Mittels "staticmethod" vereinfacht sich das ganze:

Code: Alles auswählen

Foo.bar()

#mit
class Foo(object):
    def bar():
        pass


An der Signatur von bar kannst du auch erkennen, dass du nun kein Zugriff mehr auf die Instanz hast.
Das Leben ist wie ein Tennisball.
JonasR
User
Beiträge: 251
Registriert: Mittwoch 12. Mai 2010, 13:59

Re: statische Klasse in python

Beitragvon JonasR » Dienstag 6. Dezember 2011, 21:38

EyDu danke für die Erklärung :)

Wer ist online?

Mitglieder in diesem Forum: egon11