Voglio creare un oggetto in python che ha alcuni attributi e voglio proteggermi dall'usare accidentalmente il nome dell'attributo sbagliato. Il codice è il seguente:python, __slots__ e "l'attributo è di sola lettura"
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
Ma dopo l'esecuzione di questo semplice codice, ottengo uno strano errore:
Traceback (most recent call last):
File "test.py", line 8, in <module>
a.m = "?"
AttributeError: 'test' object attribute 'm' is read-only
C'è qualche programmatore saggio che può risparmiare un po 'del loro tempo e mi illumini sugli errori di "sola lettura"?
Questo sembra un caso d'uso inutile. Perché stai facendo questo? Perché non stai usando le proprietà? –
Voglio proff di scrivere un nome di proprietà con un errore di battitura, per eample se scrivo object.my_prperty = 1 invece di object.my_property = 1 (mancata 'o'), python non mostrerà errori, ma avrò un errore logico nel mio programma. Quindi voglio limitare una proprietà al mio set predefinito, quindi solo loro possono essere ammessi. Come posso risolvere questo con le proprietà? – grigoryvp
generalmente in python accettiamo la possibilità di errori di ortografia negli incarichi e scriviamo buoni test che catturerebbero anche errori superficiali e più semantici. Umilmente suggerisco che se vuoi scrivere python, dovresti considerare di farlo in modo pitone invece di combattere la lingua con le unghie e con i denti. Aggiungo che gli errori ortografici nel mio codice Python mi sono costati * forse * 20 minuti di tempo negli ultimi 9 anni. – llimllib