2010-07-15 38 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

相關問題