为什么使用easdict不能正确读取字符串



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

from easydict import EasyDict
conf = EasyDict()
conf.name = 'CD Group'
print(conf.name)
> ['CD Group']    # a list

但我希望实现的是:

> CD Group    # string type

为什么是这样?感谢您的反馈!

easydict源

一个有趣的点是,当我将配置从argparse传递到easdict时,类型不会出错,如下所示:

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']

相关内容

  • 没有找到相关文章

最新更新