Aufruf der Klasse staticmethod innerhalb des Klassenkörpers?
Wenn ich versuche, eine statische Methode aus dem Hauptteil der Klasse heraus zu verwenden und die statische Methode mithilfe der integrierten Methode zu definierenstaticmethod
als Dekorateur fungieren, wie folgt:
class Klass(object):
@staticmethod # use as decorator
def _stat_func():
return 42
_ANS = _stat_func() # call the staticmethod
def method(self):
ret = Klass._stat_func() + Klass._ANS
return ret
Ich erhalte folgenden Fehler:
Traceback (most recent call last):<br>
File "call_staticmethod.py", line 1, in <module>
class Klass(object):
File "call_staticmethod.py", line 7, in Klass
_ANS = _stat_func()
TypeError: 'staticmethod' object is not callable
Ich verstehe, warum dies geschieht (Deskriptorbindung)und können es umgehen, indem Sie es manuell konvertieren_stat_func()
in eine statische Methode nach ihrer letzten Verwendung, wie folgt:
class Klass(object):
def _stat_func():
return 42
_ANS = _stat_func() # use the non-staticmethod version
_stat_func = staticmethod(_stat_func) # convert function to a static method
def method(self):
ret = Klass._stat_func() + Klass._ANS
return ret
Meine Frage lautet also:
Gibt es bessere Möglichkeiten, dies zu erreichen, als in saubereren oder "pythonischeren"?