对于 Python 版本 3.10 及更高版本,从类体内调用静态方法非常简单。但是,对于 3.9 及更早版本,这提出了挑战。
尝试从类主体内调用静态方法时,可能会遇到以下错误:
TypeError: 'staticmethod' object is not callable
发生此错误是因为静态方法在使用 staticmethod 装饰器声明时成为描述符。描述符绑定到类而不是实例,使得它们无法从类体内访问。
一种解决方法是通过 __func__ 属性访问原始函数静态方法对象:
<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>
以上是如何在 Python 中从类体内调用类静态方法?的详细内容。更多信息请关注PHP中文网其他相关文章!