Базовый класс Validator имеет последнее свойство protected, которое необходимо назначить в какой-то момент во время создания экземпляра, желательно как можно скорее, но никогда больше.
Для этого я существенно ограничил количество допустимых назначений до 1:
Код: Выделить всё
class InternalError(Exception): ...
class Validator:
__private_proxy = None
@property
def final_value(self):
if self.__private_proxy is None:
msg = 'not yet assigned'
raise InternalError(msg) from AttributeError(msg)
return self.__private_proxy
@final_value.setter
def final_value(self, value):
assert value is not None
if self.__private_proxy is not None:
msg = 'property can only be assigned once'
raise InternalError(msg) from Exception(msg) # IMPORTANT
self.__private_proxy = value
Доступ к атрибуту, который не существует, естественным образом вызывает ошибку AttributeError, но какое исключение pythonic вызывает свойство с n допустимых назначений при назначении n+ 1? ОстановитьИтерацию!?
Подробнее здесь: https://stackoverflow.com/questions/791 ... an-only-be
Мобильная версия