【发布时间】:2017-05-21 18:30:18
【问题描述】:
我怎样才能让 slots 与@property 一起为下面的课程工作。我有几千个导致内存问题的下类实例,所以我添加了插槽
我使用数据创建了实例,然后将位置信息添加到实例中。
添加 slots 后,我的实例创建不起作用,我收到以下错误
AttributeError: 'Host' 对象没有属性 '_location'
class Host(object):
__slots__ = ['data', 'location']
def __init__(self, data, location=''):
self.data = data
self.location = location
@property
def location(self):
return self._location
@location.setter
def location(self, value):
self._location = value.lower()
def __repr__(self):
if self.location == '':
self.loc = 'Not Found'
else:
self.loc = self.location
return 'Host(name={}, location={})'.format(self.name, self.loc)
【问题讨论】:
-
因为您没有在
__slots__中包含支持属性_location。错误消息告诉你这一点。 -
为什么
_location和loc不在插槽中? -
self.name应该在__repr__中是什么? -
@Martijn Pieters - 抱歉,这是复制粘贴。名称与数据为 json
-
@zsh: 可能真的是
name = self.data['name']?
标签: python properties slots