Запретить создание новых атрибутов вне __init__Python

Программы на Python
Ответить
Anonymous
 Запретить создание новых атрибутов вне __init__

Сообщение Anonymous »

Я хочу иметь возможность создать класс (на Python), который после инициализации с помощью __init__ не принимает новые атрибуты, но принимает модификации существующих атрибутов. Я вижу несколько хакерских способов сделать это, например, использование метода __setattr__, такого как

Код: Выделить всё

def __setattr__(self, attribute, value):
if not attribute in self.__dict__:
print "Cannot set %s" % attribute
else:
self.__dict__[attribute] = value
а затем редактировать __dict__ непосредственно внутри __init__, но мне интересно, есть ли «правильный» способ сделать это?

Подробнее здесь: https://stackoverflow.com/questions/360 ... tside-init
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»