[英]How to apply a Python timings decorator to a method within a class
我正在嘗試將此處描述的時序裝飾器應用於 class 中的方法,而不是獨立方法。 這應該怎么做?
我收到此錯誤:
TypeError: unbound method wrapper() must be called with SomeClass instance as first argument (got float instance instead)
編輯
感謝您的評論,我想我知道問題所在。 這不起作用:
class A:
@timings
@classmethod
def a(cls, x):
print(x)
A.a(2)
正是因為你說的原因。 類型錯誤:必須使用 A 實例作為第一個參數調用未綁定的方法 wrapper()(改為獲取 int 實例)
但這確實:
class A:
@classmethod
@timings
def a(cls, x):
print(x)
A.a(2)
所以順序很重要。 我認為這里發生的事情是它欺騙了 python 處理綁定方法的方式:當 python 看着成員 a 時,它必須做出決定:
如果它得到一個常規的 function,它將執行 (1),並且@timings 生成一個常規的 function。
這能解決問題嗎?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.