Quiero crear un objeto en python que tenga algunos atributos y quiero protegerme de usar accidentalmente el nombre de atributo incorrecto. El código es el siguiente:python, __slots__, y "el atributo es de solo lectura"
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
Pero después de ejecutar este código simple, aparece un extraño error:
Traceback (most recent call last):
File "test.py", line 8, in <module>
a.m = "?"
AttributeError: 'test' object attribute 'm' is read-only
¿Hay cualquier programador prudente, que puede dedicar un poco de su tiempo y me ilumine sobre los errores de "solo lectura"
Esto parece un caso de uso innecesario. ¿Por qué estás haciendo esto? ¿Por qué no estás usando propiedades? –
Quiero proponerme escribir un nombre de propiedad con un error tipográfico, por ejemplo si escribo object.my_prperty = 1 en lugar de object.my_property = 1 (error 'o'), python no mostrará ningún error, pero tendré un error de lógica en mi programa. Por lo tanto, quiero limitar las propiedades a mi conjunto predefinido, por lo que solo se pueden procesar. ¿Cómo puedo resolver esto con propiedades? – grigoryvp
generalmente en python aceptamos la posibilidad de errores ortográficos en las asignaciones y escribe buenas pruebas que también detectarían errores superficiales y más semánticos. Humildemente sugiero que si quieres escribir Python, deberías considerar hacerlo de la forma de pitón en lugar de luchar contra el lenguaje con uñas y dientes. Añadiré que las faltas de ortografía en mi código python me han costado * quizás * 20 minutos en los últimos 9 años. – llimllib