我在類的實例中計算函數時遇到了一些麻煩。我不確定我是以正確的方式去做的(從來沒有用過timeIt),我嘗試了第二個參數導入的一些變化,但沒有運氣。這是我正在做的一個愚蠢的例子:Python - 類中的Timeit
import timeit
class TimedClass():
def __init__(self):
self.x = 13
self.y = 15
t = timeit.Timer("self.square(self.x, self.y)")
try:
t.timeit()
except:
t.print_exc()
def square(self, _x, _y):
print _x**_y
myTimedClass = TimedClass()
哪跑,抱怨自我。
Traceback (most recent call last):
File "timeItTest.py", line 9, in __init__
t.timeit()
File "C:\Python26\lib\timeit.py", line 193, in timeit
timing = self.inner(it, self.timer)
File "<timeit-src>", line 6, in inner
self.square(self.x, self.y)
NameError: global name 'self' is not defined
這與TimeIt創建一個小的虛擬環境來運行的功能,但我有什麼要傳遞給第二個參數,使這一切快樂呢?
你有你爲什麼要到類的__init__內使用timeit任何具體的原因是什麼? 你應該只是時間從「外部」的函數調用: t = timeit.Timer(「myTimedClass.square(x,y)」) Btw「myTimedClass」不是一個靈感的名字,因爲這是一個實例TimedClass,不是一個類。 – 2010-08-31 12:56:11
在我的真實程序中,我需要從外部文件讀取一堆數據來設置對象。閱讀代碼我從__init__分離到另一個函數,以防我需要稍後再次更新對象。由於我正在運行一堆實例,並且它們自己進行文件加載,所以我希望它們都能夠自己調整時間。 在我上面發佈的簡單例子中,當然我可以從外面計時,但這對我的真實項目沒有幫助。 – DizzyDoo 2010-08-31 13:18:24