魔法方法:__getitem__()和__len__()

魔法方法:__getitem__()和__len__()

1.魔法函数简介:

         在Python中,如果想实现创建类似于序列和映射的类(可以迭代以及通过[下标]返回元素),可以通过重写魔法方法的方式去实现。常见的魔法方法包括__getitem__()、__setitem__()、__delitem__()、__len__(),它们的函数功能为:

            1)__getitem__(self,key):返回键对应的值;
            2)__len__():返回元素的数量;
            3)__delitem__(self,key):删除给定键对应的元素;
            4)__setitem__(self,key,value):设置给定键的值。

         其中只要实现了__getitem__和 __len__方法就会被认为是序列。

         __len__()函数可以用来查看对象长度;

         __getitem__(self,key)函数可以对对象进行[]操作如切片、索引、iterd等,如果在类中定义了__getitem__()方法,那么它的实例对象(假设为P)就可以以P[key]形式取值,当实例对象做P[key]运算时,就会调用类中的__getitem__()方法。当对类的属性进行下标的操作时,首先会被__getitem__()、__setitem__()、__delitem__()拦截,从而执行我们在方法中设定的操作,如赋值,修改内容,删除内容等。

2.Dataset类中的__getitem__和 __len__方法:

         torch.utils.data.Dataset是PyTorch中用来表示数据集的抽象类,Dataset是一个包装类,用来将数据包装为Dataset类,然后传入DataLoader中从而使DataLoader类更加快捷的对数据进行操作。当处理自定义的数据集的时候必须继承Dataset,然后重写 __len__()和__getitem__()函数。

            1)__len__(): 使得len(dataset)返回数据集的大小;

            2)__getitem__():使得支持dataset[i]能够返回第i个数据样本这样的下标操作,在__getitem__()函数中完成图片的读取工作可以减小内存开销,只要在需要用到的时候才将图片读入。

3.参考博客:

            1)https://www.jianshu.com/p/cca8e8834066

            2)https://zhuanlan.zhihu.com/p/87786297

            3)https://www.jianshu.com/p/6e22d21c84be

  • 12
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值