Je veux créer un objet en python qui a quelques attributs et je veux me protéger d'utiliser accidentellement le mauvais nom d'attribut. Le code est le suivant:python, __slots__, et "attribut est en lecture seule"
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
Mais après l'exécution de ce code simple, je reçois une erreur très étrange:
Traceback (most recent call last):
File "test.py", line 8, in <module>
a.m = "?"
AttributeError: 'test' object attribute 'm' is read-only
Yat-il un programmeur sage qui peut épargner un peu de leur temps et me éclairer à propos des erreurs "en lecture seule"?
Cela ressemble à un cas d'utilisation inutile. Pourquoi fais-tu ça? Pourquoi n'utilisez-vous pas les propriétés? –
Je veux me pro- fiter d'écrire un nom de propriété avec une faute de frappe, pour eample si j'écris object.my_prperty = 1 au lieu de object.my_property = 1 (manqué 'o'), python ne montrera aucune erreur mais j'aurai un erreur de logique dans mon programme. Donc, je veux limiter une propriété à mon ensemble prédéfini, donc seulement ils peuvent être acessed. Comment je peux résoudre cela avec des propriétés? – grigoryvp
généralement en python, nous acceptons la possibilité de fautes d'orthographe dans les affectations et écrit de bons tests qui captureraient aussi des erreurs superficielles et plus sémantiques. Je suggère humblement que si vous voulez écrire python, vous devriez envisager de le faire en python au lieu de lutter contre la langue dentaire. J'ajouterai que les fautes d'orthographe dans mon code python m'ont coûté * peut-être * 20 minutes de temps au cours des 9 dernières années. – llimllib