python语法基础--__str__()和__repr__()、__iter__、__getitem__、__call__

str()和__repr__():使直接打印类时可以得到想要的自定义的打印结果
有__str__():
在这里插入图片描述
没有__str__():
在这里插入图片描述

iter
把属于类的实例变成可用于循环语句的实例
在这里插入图片描述
def iter(self):
return self #返回循环对象
def next(self):

return self.a #返回循环过程中取到的下一个值

getitem:可使Fib这样取值–f[1], f[5]…,当然也可以用于循环
此时类可以用list的方法取某一个元素,但是这时不能用list的切片方式
(1)以下是一个错误示范,没有得到菲波那切数列,原因出在a=b \n b=a+b上
在这里插入图片描述
(2)以下是正确示范,a, b=b, a+b跟分开写的是不一样的:
在这里插入图片描述
使类也可使用list的切片方式显示,需要在__getitem__中进行判断,判断[ ]中参数是int数值还是slice切片,并分别定义返回值:
下面这种写法会浪费内存资源,是通过把L[:n]全部放入L中之后再提取得到的L的切片
当然,a=b\n b=a+b不应该分开写,应该写成a, b=b, a+b
在这里插入图片描述
更好的写法,在切片部分的循环中,添加判断是否需要被添加到L的判断(当然,a=b\n b=a+b不应该分开写,应该写成a, b=b, a+b):
在这里插入图片描述
getattr:没太看懂
在这里插入图片描述
call:使实力本身可以用做于类中定义的实例方法的调用
在这里插入图片描述
对比于上面__call__方法
在这里插入图片描述
最后,可以用callable()判断对象是不是可被调用的:
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值