为什么使用 easydict 无法正确读取字符串?

Why strings are not read correctly using easydict?

我使用 easydict 库来设置配置,但是当我将配置存储为字符串时,它会将字符串变成字符串本身的列表,如下所示:

from easydict import EasyDict
conf = EasyDict()
conf.name = 'CD Group'
print(conf.name)

> ['CD Group']    # a list

但我希望达到的是:

> CD Group    # string type

为什么会这样? 感谢您的任何反馈!

easydict source

有趣的一点是,当我将配置从 argparse 传递到 easydict 时,类型没有出现错误,如下所示:

conf.file_name = args.file_name    # --file_name input.xlsx
print(conf.file_name)

> input.xlsx

正在看__setattr__

    def __setattr__(self, name, value):
        if isinstance(value, (list, tuple)):
            value = [self.__class__(x)
                     if isinstance(x, dict) else x for x in value]
        elif isinstance(value, dict) and not isinstance(value, self.__class__):
            value = self.__class__(value)

如您在 __setattr__ 方法中所见,如果您将变量作为列表或元组传递,您将获得一个列表,否则您将返回原始类型。

我没有遇到你提到的问题:

conf = EasyDict()
conf.name = 'CD Group'
conf.name2 = ['CD Group']
print(conf.name , conf.name2, sep='\n')

输出:

>>
CD Group
['CD Group']