将长字符串设置为类中的默认值

时间:2017-10-20 06:10:47

标签: python

我正在尝试将多个dirs设置为具有大量重复输入的属性。

我将我的代码重构为:

class ChangeDir:
    def __init__(self,**kwargs):
        self.dir1 = kwargs['dir1']
        self.dir2 = kwargs['dir2']
        self.dir3 = kwargs['dir3']

减少打字位,运行如下:

dirs_dict = {'dir1':'/Users/~/Desktop', 'dir2':'/Users/~/Documents',
'dir3':'/Users/~/Application'}
In [82]: cd = ChangeDir(**dirs_dict)
In [83]: cd.dir1
Out[83]: '/Users/~/Desktop'

同时需要将前3个dirs设置为默认值, 我尝试使用方法dict.update

使用初级方法
class ChangeDir:
    def __init__(self,**kwargs):
        dirs_dict = {'dir1':'/Users/~/Desktop', 'dir2':'/Users/~/Documents',
        'dir3':'/Users/~/Application'}
        dirs_dict.update(kwargs)
        self.dir1 = dirs_dict['dir1']
        self.dir2 = dirs_dict['dir2']
        self.dir3 = dirs_dict['dir3']
        self.dir4 = dirs_dict['dir4']
        ...

如何以先进的方式解决问题?

1 个答案:

答案 0 :(得分:0)

可能使用setattr(),例如

for key, value in kwargs.items():
    setattr(self, key, value)

但是我认为这不是必要的,可能有一种更简单的方法可以做你正在做的事情。也许这些dirs应该是列表而不是带有键dir1dir2等的数组,或者它们不必是类的属性。< / p>