我正在尝试将多个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']
...
如何以先进的方式解决问题?
答案 0 :(得分:0)
可能使用setattr()
,例如
for key, value in kwargs.items():
setattr(self, key, value)
但是我认为这不是必要的,可能有一种更简单的方法可以做你正在做的事情。也许这些dirs应该是列表而不是带有键dir1
,dir2
等的数组,或者它们不必是类的属性。< / p>