Here's the code: http://paste.pocoo.org/show/238093/
My main questions right now are:
Is Line 37 mainly the gist of this program? And does it simply calculate this once and then print the result? Ex:
self.start + key*self.step
withstart=1, key=4, step=2
[prints 9]where does the variable 'value' actually come into play here? Line 39.
Not worried about the "Exceptions" part of the program. I pretty much understand what it's doing.
Lastly, and you really don't have to answer this one as it's probably better as another question "down the road" but I really do not see how
__getitem__
,__setitem__
...etc...you still have to write in your own code to "make it do stuff". :) I'm just not getting what's so "special" ab开发者_运维技巧out these special methods.
- Yes, more or less.
- This is the exception. If someone assigns a value to a particular index, the sequence remembers that and will return that value instead of calculating it. Note that the code here does not actually use this function.
- Random comment instead: the last 3 lines of the getitem function could be much more concisely implemented as
return self.changed.get(key, self.start + key*self.step)
--dict.get
lets you provide a default to return if a key is missing. - They're "special" only in that they let you override what happens when someone does
yourthing[foo]
oryourthing[foo] = bar
. You see the first going on here; the second is what happens if someone doess[5] = 100
-- the 100 ends up as thevalue
of a__setitem__
call.
精彩评论