Statyczna metoda wywoływania klasy w treści klasy?

Kiedy próbuję użyć metody statycznej z wnętrza klasy i zdefiniować metodę statyczną przy użyciu wbudowanejstaticmethod funkcjonować jako dekorator, w ten sposób:

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

Otrzymuję następujący błąd:

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

Rozumiem, dlaczego tak się dzieje (wiązanie deskryptorów)i może obejść to, ręcznie konwertując_stat_func() do metody statycznej po ostatnim użyciu, jak poniżej:

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

Więc moje pytanie brzmi:

Czy są lepsze, jak w czystszym lub bardziej „Pythonicznym”, sposoby osiągnięcia tego celu?

questionAnswers(6)

yourAnswerToTheQuestion