python 中__init__、__getitem__、__setitem__如何理解

xiaofannk 2016-01-20 11:06:51
def checkIndex(key):
if not isinstance(key,(int,long)):raise TypeError
if key<0:raise IndexError
class ArithmeticSequence:
def __init__(self,start=0,step=1):
self.start = start #保存开始值
self.step = step #保存步长值
self.changed = {} #没有项被修改
def __getitem__(self,key):
checkIndex(key)
try:return self.changed[key] #修改好了吗?
except KeyError: #否则......
return self.start + key*self.step #.....计算值
def __setitem__(self,key,value):
checkIndex(key)
self.changed[key] = value
...全文
292 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
python_tty 2016-01-22
  • 打赏
  • 举报
回复
这三个方法都是运算符重载的方法,当实例通过 a[index] 这种方式调用的时候,会触发__getitem__方法; a[index]=value 会触发__setitem__方法
ppchaos 2016-01-22
  • 打赏
  • 举报
回复
用debug模式跟踪一下就知道了
ppchaos 2016-01-21
  • 打赏
  • 举报
回复
到底想问什么?
引用 4 楼 qq_15508113 的回复:
引用 3 楼 xiaofannk的回复:
[quote=引用 2 楼 qq_15508113 的回复:] 这是设置类的方法,从而能进行变量的赋值
那具体是怎么进行的,执行起来一步步是什么样的?
如果没记错都是默认,功能与__init__一样,设置类的方法,如果有疑问可以查看改类的内置函数[/quote]
nobSlience 2016-01-21
  • 打赏
  • 举报
回复
引用 3 楼 xiaofannk的回复:
引用 2 楼 qq_15508113 的回复:
这是设置类的方法,从而能进行变量的赋值
那具体是怎么进行的,执行起来一步步是什么样的?
如果没记错都是默认,功能与__init__一样,设置类的方法,如果有疑问可以查看改类的内置函数
ppchaos 2016-01-20
  • 打赏
  • 举报
回复
这个是取得序列号吧
xiaofannk 2016-01-20
  • 打赏
  • 举报
回复
引用 2 楼 qq_15508113 的回复:
这是设置类的方法,从而能进行变量的赋值
那具体是怎么进行的,执行起来一步步是什么样的?
nobSlience 2016-01-20
  • 打赏
  • 举报
回复
这是设置类的方法,从而能进行变量的赋值

37,719

社区成员

发帖
与我相关
我的任务
社区描述
JavaScript,VBScript,AngleScript,ActionScript,Shell,Perl,Ruby,Lua,Tcl,Scala,MaxScript 等脚本语言交流。
社区管理员
  • 脚本语言(Perl/Python)社区
  • IT.BOB
加入社区
  • 近7日
  • 近30日
  • 至今

试试用AI创作助手写篇文章吧