C'est la première fois que j'écris ici, désolé si le message est fou ou trop longtemps.
J'étais intéressé par la compréhension de la manière dont les objets d'objets sont récupérés en cas de besoin. J'ai donc lu la documentation de Python 2.7 intitulée "Modèle de données" ici , J'ai rencontré __ getattr __ code> et, afin de vérifier si j'ai compris ou non son comportement, j'ai écrit ces wrappers de chaîne simples (et incomplets). P>
>>> y=NewStr("test")
>>> y+y
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: unsupported operand type(s) for +: 'NewStr' and 'NewStr'
3 Réponses :
Votre La classe de style nouvelle fonctionne correctement: vous n'avez pas défini __ getattr __ code> ne retourne rien. Je ne sais pas pourquoi la classe ancienne est en train de faire le
__ getattr __ code> avant la recherche de
__ ajouter __ code>, mais c'est, et cela tente d'appeler la valeur de retour qui est < Code> Aucune code>. p>
__ ajouter __ code> donc il ne sait pas comment les ajouter. P>
Plus d'infos de la documentation Python: P>
http://docs.python.org/reference/Datamodel .html # personnalisation-attribut-accès p>
S'il vous plaît, n'utilisez pas de classes de style anciennes pour rien. Ils sont obsolètes pour des raisons évidentes - comme celle-ci. Comme ils sont obsolètes, sachant comment ils travaillaient ne sont pas utiles. Je les jeter et passer à autre chose, s'il vous plaît.
La comparaison du comportement des anciennes et de nouvelles classes aide à illustrer la manière dont les classes de style ne fonctionnent, surtout si vous connaissez des classes de style ancien. Il est en effet non surprenant qu'ils travaillent de différentes manières et il est réconfortant de connaître les nouvelles classes de travail comme prévu. Néanmoins, il y a de la valeur pour essayer de comprendre pourquoi le code est interprété comme si ce n'est que la version.