当一个类中创建结果对象,是有可能使用__slots__
在这个例子吗? 我以为我可以得到它通过传递工作'__slots__'
到字典的第三个参数type
:
class GeocodeResult(object):
"""class to handle Reverse Geocode Result"""
__slots__ = ['geometry', 'response', 'spatialReference',
'candidates', 'locations', 'address', 'type', 'results']
def __init__(self, res_dict, geo_type):
RequestError(res_dict)
self.response = res_dict
self.type = 'esri_' + geo_type
self.spatialReference = None
self.candidates = []
self.locations = []
self.address = []
if 'spatialReference' in self.response:
self.spatialReference = self.response['spatialReference']
# more stuff
@property
def results(self):
results = []
for result in self.address + self.candidates + self.locations:
result['__slots__'] = ['address', 'score', 'location', 'attributes']
results.append(type('GeocodeResult.result', (object,), result))
return results
def __len__(self):
"""get length of results"""
return len(self.results)
对于results
属性,我想建立小,重量轻的对象的列表与4个属性: ['address', 'score', 'location', 'attributes']
最终的目标是创建的,我甚至可以在插槽得到,但它仍然保持__dict__
。 因为有可能是数百个结果的对象,我想只有上面列出节省空间的四个属性。
例:
>>> rev = GeocodeResult(r, 'reverseGeocode')
>>> result = rev.results[0]
>>> result.__slots__
['address', 'score', 'location', 'attributes']
>>> hasattr(result, '__dict__')
True
>>>
是否有这样做的更好的办法? 还是我必须定义一个明确的类来处理呢?