类的魔法方法之斐波那契数列演示
class Fib():
def __init__(self):
self.items=[0,1,1]
def __call__(self,index):#类中定义一个该方法,实例就可以像函数一样调用
return self[index]
def __getitem__(self,index):#实现self[key]访问,序列对象,key接受整数为索引,或者切片
if index < 0:
return 'ERROR index'
if index <len(self.items):
return self.items[index]
for i in range(len(self.items),index+1):
self.items.append(self.items[i-1]+self.items[i-2])
return self.items[index]
def __str__(self):#str()函数,内建函数format(),print()函数调用
return str(self.items)
__repr__=__str__#对一个对象获取字符串表达,调用__repr__方法返回字符串表达,如果__repr__方法也没有定义,就直接返回object的定义,就是显示内存地址信息
fib=Fib()
print(fib(10),fib)
print fib
print(fib(10),fib(11))
print fib.__dict__
结果
(55, [0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55])
[0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55]
(55, 89)
{'items': [0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89]}

浙公网安备 33010602011771号