我的代码中有很多这类东西;他们使文件超长且无聊。有没有一种很好的方法来缩短它?
def __init__(self):
self.g = []
self.t = []
self.d = []
self.fft = []
self.freq = []
答案 0 :(得分:4)
一些选项:
def __init__(self):
for att in ('g','t','d','fft','freq'):
setattr(self,att,[])
或
def __init__(self):
attrs = ('g','t','d','fft','freq')
self.__dict__.update(zip(attrs,([] for _ in range(len(attrs)))))
但老实说?显式方法很好。我认为当你有一些笨重的属性(可能超过10个)时,这种方法会变得更好,但在这种情况下,我会重新检查你是否可以将它们中的一些打包成自己的集合。
答案 1 :(得分:2)
嗯,你也可以这样做:
def __init__(self):
self.g, self.t, self.d, self.fft, self.freq = [], [], [], [], []
这个更短但我不确定它真的更好......
答案 2 :(得分:0)
你可以这样做:
def __init__(self):
attr_names = ['g', 't', 'd', 'fft', 'freq']
for attr_name in attr_names:
setattr(self, attr_name, [])
但是如果以这种方式设置对象属性,代码将太动态,如果使用IDE或其他静态分析器,则无法提供良好的结果。
答案 3 :(得分:0)
this
模块$ python -m this|grep Readability
Readability counts
您的代码片段似乎是我做您需要的最佳方式。