2010-07-15 56 views
1

下面的代码:http://paste.pocoo.org/show/238093/我想知道这个Python程序发生了什么。我已经包括了代码

我的主要问题,现在是:

  1. 是37号线该方案的主要要点?它是否只计算一次,然后打印结果?例如:self.start + key*self.stepstart=1, key=4, step=2 [打印9]

  2. 这里变量'值'实际上在哪里起作用?第39行。

  3. 不担心程序的“例外”部分。我非常明白它在做什么。

  4. 最后,你真的没有回答这个问题,因为它可能是另一个问题:“在路上”更好,但我实在看不出__getitem____setitem__ ...等等...你仍然有写你自己的代码来“让它做东西”。 :)我只是没有得到关于这些特殊方法的“特别”。

回答

3
  1. 是,或多或少。
  2. 这是例外。如果某人为特定索引分配值,则该序列会记住该值,并将返回该值而不是计算该值。请注意,此处的代码实际上并未使用此功能。
  3. 改为随机发表评论:getitem的最后3行函数可以更简洁地实现为return self.changed.get(key, self.start + key*self.step) - dict.get可让您在缺少密钥时提供默认返回值。
  4. 他们是“特殊的”,只是因为他们让你重写当有人做yourthing[foo]yourthing[foo] = bar时会发生什么。你看到第一个在这里;第二个是如果有人做的话会发生什么s[5] = 100 - 100最后成为__setitem__调用的value
+0

优秀的评论/回复!我不能要求任何更好的。我更了解现在正在发生的事情,现在*我可以转到其他主题。感谢您的帮助,我真的很感激。 – jimmyc3po 2010-07-15 22:26:13

+0

如果有帮助的话,可以按照自己的方式向上倾斜,并将答案标记为已接受。这是在StackOverflow上显示感谢的适当方式。 (虽然评论也许也是赞赏。) – Wilduck 2010-07-15 22:36:20

+0

哦,好吧。谢谢你让我知道。 “第一次计时器”。 :) – jimmyc3po 2010-07-15 22:39:08

相关问题