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"?

Antworten auf die Frage(6)

Ihre Antwort auf die Frage