Wie funktionieren Decoratoren ?

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.
Antworten
N317V
User
Beiträge: 504
Registriert: Freitag 8. April 2005, 13:23
Wohnort: München

BlackJack hat geschrieben:Naja, man "braucht" sie ab und zu für `classmethod` oder `staticmethod`.
OK, seh ich ein: die Frage war falsch gestellt. Ich hab schon nicht verstanden, wofür ich 'classmethod' und 'staticmethod' brauchen soll. Das einzige in der Doku, was mich aufhorchen lässt, ist der Satz
Guido van Rossum hat geschrieben:The instance is ignored except for its class.
Was mir das bringen soll, ist mir aber immernoch unklar. Vielleicht später, wenn der Kaffee wirkt... :)
Es gibt für alles eine rationale Erklärung.
Außerdem gibt es eine irrationale.

Wie man Fragen richtig stellt
mitsuhiko
User
Beiträge: 1790
Registriert: Donnerstag 28. Oktober 2004, 16:33
Wohnort: Graz, Steiermark - Österreich
Kontaktdaten:

Guckst du:

Code: Alles auswählen

>>> class C(object):
...     def a(self):
...             print self
...     @classmethod
...     def b(cls):
...             print cls
...     @staticmethod
...     def c():
...             pass
...
>>> i = C()
>>> i.a()
<__main__.C object at 0xb7d804ac>
>>> i.b()
<class '__main__.C'>
>>> i.c()
>>> C.a()
Traceback (most recent call last):
  File "<stdin>", line 1, in ?
TypeError: unbound method a() must be called with C instance as first argument (got nothing instead)
>>> C.b()
<class '__main__.C'>
>>> i.c()
>>>
TUFKAB – the user formerly known as blackbird
N317V
User
Beiträge: 504
Registriert: Freitag 8. April 2005, 13:23
Wohnort: München

Schönes Beispiel, blackbird, danke schön! Wie es grundsätzlich funktioniert hab ich schon verstanden. Gibt es zu dieser Lösung aber auch ein Problem? Oder anders gefragt: was wäre denn ein konkreter Anwendungsfall? Irgendwie lässt mich meine Phantasie diesbezüglich im Stich. ;-(
Es gibt für alles eine rationale Erklärung.
Außerdem gibt es eine irrationale.

Wie man Fragen richtig stellt
Joghurt
User
Beiträge: 877
Registriert: Dienstag 15. Februar 2005, 15:07

TarFile in der Standardbibliothek nutzt das, z.B.

Sieh dir mal den Quellcode an
Antworten