Как я могу получить слоты для работы с @property для класса ниже. У меня несколько тысяч экземпляров класса ниже, что вызывает проблемы с памятью, поэтому я добавил слоты@property не работает после добавления __slots__
Я создал экземпляры с данными, а затем добавил данные о местоположении позже в экземпляры.
После добавления слотов мое создание экземпляра не работает, и я получаю следующую ошибку
AttributeError: «Хост» объект не имеет атрибута «_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)
Поскольку вы не указываете атрибут поддержки '_location' в' __slots__'. Сообщение об ошибке сообщает об этом. – jonrsharpe
Почему '_location' и' loc' также не входят в слоты? – Eric
Что такое 'self.name', которое должно быть в' __repr__'? –