2010-07-15 4 views
1

Voici le code: http://paste.pocoo.org/show/238093/J'aimerais savoir ce qui se passe dans ce programme Python. J'ai inclus le code

Mes questions principales sont maintenant droit:

  1. est-Ligne 37 principalement l'essentiel de ce programme? Et calcule-t-il simplement ceci une fois et ensuite imprime le résultat? Ex: self.start + key*self.step avec start=1, key=4, step=2 [imprime 9]

  2. Où la variable 'value' entre-t-elle réellement en jeu ici? Ligne 39.

  3. Ne vous inquiétez pas de la partie «Exceptions» du programme. Je comprends à peu près ce qu'il fait.

  4. Enfin, et vous n'avez pas vraiment répondre à cette question car il est probablement mieux comme une autre question « sur la route », mais je ne vois vraiment pas comment __getitem__, __setitem__ ... etc ... vous avez encore écrire dans votre propre code pour "le faire faire des choses". :) Je ne comprends pas ce qui est "spécial" à propos de ces méthodes spéciales.

Répondre

3
  1. Oui, plus ou moins.
  2. Ceci est l'exception. Si quelqu'un affecte une valeur à un index particulier, la séquence se souvient de cela et retournera cette valeur au lieu de la calculer. Notez que le code ici n'utilise pas réellement cette fonction.
  3. commentaire au hasard à la place: les 3 dernières lignes du getitem fonction pourrait être beaucoup plus concise mis en œuvre comme return self.changed.get(key, self.start + key*self.step)-dict.get vous permet de fournir une valeur par défaut de revenir si une clé est manquante.
  4. Ils sont "spéciaux" seulement en ce qu'ils vous permettent de remplacer ce qui se passe quand quelqu'un fait yourthing[foo] ou yourthing[foo] = bar. Vous voyez le premier qui se passe ici; la seconde est ce qui se passe si quelqu'un fait s[5] = 100 - le 100 se termine par le value d'un appel __setitem__.
+0

Excellent commentaires/réponses! Je ne pouvais rien demander de mieux. Je comprends plus de ce qui se passe maintenant et * maintenant * je peux passer à d'autres sujets. Merci pour votre aide, je l'apprécie vraiment. – jimmyc3po

+0

Si cela vous a été utile, lancez une révocation à sa façon et marquez la réponse comme acceptée. C'est la façon appropriée de montrer vos remerciements sur StackOverflow. (bien que le commentaire soit probablement apprécié aussi.) – Wilduck

+0

Oh, d'accord. Merci de me le faire savoir. "Premier temporisateur". :) – jimmyc3po

Questions connexes