1 回答

TA貢獻1895條經驗 獲得超3個贊
這個特定的初始化錯誤是因為您將多個變量傳遞給計時器類。
在這一行中: Timer(86400, messageachiver.archive, dir = message_archive_dir, fmt = message_archive_format) 您將存檔函數、dir 變量和 fmt 變量傳遞給 TIMER 而不是傳遞給 messageachiver 類。Timer 沒有 dir 和 fmt 的命名變量。
所以這條線應該是Timer(86400, messageachiver.archive)
不過,這只能部分解決您的問題。因為您實際上從未使用需要它們擁有的變量來初始化類。所以在你調用定時器之前,你需要通過添加來初始化類messageachivermymessageachiver = messageachiver(dir = message_archive_dir, fmt = message_archive_format)
在嘗試初始化它之前,您還需要放置類定義。最終代碼:
from threading import Timer
class messageachiver(object):
def __init__(self, **kwargs):
self.message_archive_dir = kwargs['dir']
self.message_archive_format = kwargs['fmt']
def archive(self):
print("message_archive_dir is " + self.message_archive_dir)
print("message_archive_format is " + self.message_archive_format)
print("Archiving trade messages")
message_archive_dir = "achivedir"
message_archive_format = "zip"
mymessageachiver = messageachiver(dir = message_archive_dir, fmt = message_archive_format)
# That's a huge wait time, try something like 10 for a smaller wait during testing.
archive_timer = Timer(86400, mymessageachiver.archive)
archive_timer.start()
添加回答
舉報