Home >Backend Development >Python Tutorial >How to Call Class Static Methods from within the Class Body in Python?
For Python versions 3.10 and above, calling a static method from within the class body is straightforward. However, for versions 3.9 and earlier, this poses a challenge.
When attempting to call a static method from within the class body, you may encounter the following error:
TypeError: 'staticmethod' object is not callable
This error occurs because static methods, when declared using the staticmethod decorator, become descriptors. Descriptors bind to the class instead of the instance, making them inaccessible from within the class body.
One workaround is to access the original raw function through the __func__ attribute of the static method object:
<code class="python">class Klass(object): @staticmethod def stat_func(): return 42 _ANS = stat_func.__func__() # call the staticmethod def method(self): ret = Klass.stat_func() return ret</code>
<code class="python">class Klass(object): @staticmethod def stat_func(): return 42 def method(self): ret = Klass.stat_func() return ret</code>
The above is the detailed content of How to Call Class Static Methods from within the Class Body in Python?. For more information, please follow other related articles on the PHP Chinese website!