如何使用 dict 调用文件并将其传递给类对象?

how to call file with a dict and pass it to class object?

提问人:Dr. Joe 提问时间:2/16/2020 最后编辑:eyllanescDr. Joe 更新时间:2/16/2020 访问量:45

问:

我需要调用一个具有多个字典条目的对象(类为“Configurator”)。调用来自命令行。所以我希望像下面这样做。但这似乎行不通。 设计上是否存在重大错误?

第一个文件:

initiator.py

from configurator import Configurator

def program1(**kwargs):
    sampleInstance = Configurator(kwargs)

if __name__ == '__main__':
    kwargs = dict([arg.split('=', maxsplit=1) for arg in sys.argv[1:]])
    program1(kwargs)

第二个文件:

configurator.py

class Configurator:
    def __init__(self, **kwargs):
        print(kwargs)

输入:

python .\initiator.py myValue1="Hello", myValue2="World"

输出:

program1(kwargs)
    TypeError: program1() takes 0 positional arguments but 1 was given
python-3.x

评论

1赞 Daniel 2/16/2020
用。Configurator(**kwargs)

答:

1赞 Pankaj_Dwivedi 2/16/2020 #1

尝试:

from configurator import Configurator
import sys

def program1(**kwargs):
    sampleInstance = Configurator(kwargs)

if __name__ == '__main__':
    kwargs = dict([arg.split('=', maxsplit=1) for arg in sys.argv[1:]])
    program1(**kwargs)

评论

0赞 Ed Ward 2/16/2020
调用是否应该使用?program1**
0赞 Pankaj_Dwivedi 2/16/2020
是的。您可以将多个命名参数传递给 Program1。像这里一样 python .\initiator.py myValue1=“Hello”, myValue2=“World” myValue1 和 myValue2 是 program1 的两个命名参数。
1赞 Ed Ward 2/16/2020
嗯,我的意思是这句话:program1(kwargs)
0赞 Pankaj_Dwivedi 2/16/2020
哦,现在我得到了..甚至我也错过了**。更新了答案。谢谢