Я хочу создать объект в python, который имеет несколько атрибутов, и я хочу защитить себя от случайного использования неправильного имени атрибута. Код выглядит следующим образом:python, __slots__ и "attribute is read-only"
class MyClass(object) :
m = None # my attribute
__slots__ = ("m") # ensure that object has no _m etc
a = MyClass() # create one
a.m = "?" # here is a PROBLEM
Но после того, как работает этот простой код, я получаю очень странную ошибку:
Traceback (most recent call last):
File "test.py", line 8, in <module>
a.m = "?"
AttributeError: 'test' object attribute 'm' is read-only
есть ли мудрый программист, который может сэкономить немного времени и просветить меня о ошибках «только для чтения»?
Это похоже на ненужный случай использования. Зачем ты это делаешь? Почему вы не используете свойства? –
Я хочу получить от записи имя свойства с опечаткой, для eample, если я пишу object.my_prperty = 1 вместо object.my_property = 1 (пропущенный 'o'), python не будет показывать никаких ошибок, но у меня будет логическая ошибка в моей программе. Поэтому я хочу ограничить свойства своим предопределенным множеством, так что только они могут быть выполнены. Как я могу решить эту проблему со свойствами? – grigoryvp
, как правило, в python мы принимаем возможность орфографических ошибок в присваиваниях и записываем хорошие тесты, которые также будут захватывать поверхностные и более семантические ошибки. Я смиренно предлагаю, чтобы, если вы хотите написать python, вам следует подумать о том, чтобы сделать это с помощью python, вместо того, чтобы бороться с зубами и ногтями языка. Я добавлю, что опечатки в моем коде на Python стоили мне * возможно * 20 минут времени за последние 9 лет. – llimllib