简体   繁体   English

TypeError: __init__() 得到了一个意外的关键字参数 'dir'

[英]TypeError: __init__() got an unexpected keyword argument 'dir'

I try to start a timer to do some file arvchival job.我尝试启动一个计时器来做一些文件归档工作。 the code is like this:代码是这样的:

from threading import Timer

message_archive_dir = "achivedir"
message_archive_format = "zip"
archive_timer = Timer(86400, messageachiver.archive, dir = message_archive_dir, fmt = message_archive_format)
archive_timer.start()


class messageachiver(object):
    def __init__(self, **kwargs):
            self.message_archive_dir = dir
            self.message_archive_format = 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")

I got below error:我收到以下错误:

Traceback (most recent call last):
  File "sa_listener.py", line 43, in <module>
    archive_timer = Timer(archive_interval, messageachiver.archive, dir = message_archive_dir, fmt = message_archive_format)
TypeError: __init__() got an unexpected keyword argument 'dir'

I'm not sure why _ init _ does not accept **kwargs.我不确定为什么 _ init _ 不接受 **kwargs。

This specific init error is because you are passing multiple variables to the timer class.这个特定的初始化错误是因为您将多个变量传递给计时器 class。

In this line: Timer(86400, messageachiver.archive, dir = message_archive_dir, fmt = message_archive_format) You are passing the archive function, the dir variable, and the fmt variable to TIMER and not to the messageachiver class.在这一行中: Timer(86400, messageachiver.archive, dir = message_archive_dir, fmt = message_archive_format)您将归档 function、dir 变量和 fmt 变量传递给 TIMER,而不是传递给 messageachiver ZA2F2ED4F8EBC2CBB1DDZABC40。 Timer has no named variables for dir and fmt. Timer 没有用于 dir 和 fmt 的命名变量。

So the line should be Timer(86400, messageachiver.archive)所以该行应该是Timer(86400, messageachiver.archive)

This only partially fixes your problem though.不过,这只能部分解决您的问题。 Because you are never actually initializing the class with the variables you need them to have.因为您实际上从未使用您需要的变量初始化 class。 So before you call timer, you need to initialize the class messageachiver by adding mymessageachiver = messageachiver(dir = message_archive_dir, fmt = message_archive_format)因此,在调用计时器之前,您需要通过添加mymessageachiver = messageachiver(dir = message_archive_dir, fmt = message_archive_format)来初始化 class messageachiver

Also you need to put your class definition before you try to initialize it.您还需要在尝试初始化之前放置 class 定义。 The final code:最终代码:

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()

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 TypeError:__ init __()得到一个意外的关键字参数&#39;log_dir&#39; - TypeError: __init__() got an unexpected keyword argument 'log_dir' TypeError at &#39;&#39; __init__() 得到一个意外的关键字参数 &#39;&#39; - TypeError at '' __init__() got an unexpected keyword argument '' 如何修复 protonvpn TypeError: __init__() got an unexpected keyword argument 'log_dir_path'? - How to fix protonvpn TypeError: __init__() got an unexpected keyword argument 'log_dir_path'? 类型错误:__init__() 得到了意外的关键字参数“名称”-CONVOKIT - TypeError: __init__() got an unexpected keyword argument 'name' - CONVOKIT TypeError:__init __()获得了意外的关键字参数&#39;options&#39; - TypeError: __init__() got an unexpected keyword argument 'options' 类型错误:__init__() 得到了意外的关键字参数“after” - TypeError: __init__() got an unexpected keyword argument 'after' 类型错误:__init__() 得到了意外的关键字参数“i” - TypeError: __init__() got an unexpected keyword argument 'i' Scrapy错误:TypeError:__init __()获得了意外的关键字参数“回调” - Scrapy error: TypeError: __init__() got an unexpected keyword argument 'callback' 类型错误:__init__() 得到了一个意外的关键字参数“family_or_realsock” - TypeError: __init__() got an unexpected keyword argument 'family_or_realsock' Tensorboard TypeError:__ init __()得到一个意外的关键字参数&#39;file&#39; - Tensorboard TypeError: __init__() got an unexpected keyword argument 'file'
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM