對於 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中文網其他相關文章!