zoukankan      html  css  js  c++  java
  • Python __len__()、__reversed__()、__contains__()

    __len__():当使用len(A)该对象时调用该方法,当没有该方法是会报错,且返回数据不为整数也会报错

    [python] view plain copy
     
    1. class A(object):  
    2.     def __init__(self,num):  
    3.         self.num = num  
    4.         self.start_num = -1  
    5.       
    6.     def __len__(self):  
    7.         ''''' 
    8.         @summary: 当使用len(Test)该对象时调用该方法,当没有该方法是会报错,且返回数据不为整数也会报错 
    9.         '''  
    10.         print "__len__"  
    11.         return self.num - self.start_num - 1  
    12.       
    13. if __name__ == "__main__":  
    14.     print len(A(10))  
    15.            

    输出:

    [python] view plain copy
     
    1. __len__  
    2. 10  

    __reversed__():当使用reversed函数翻转对象时调用

    [python] view plain copy
     
    1. class A(object):  
    2.     def __init__(self,num):  
    3.         self.num = num  
    4.       
    5.     def __reversed__(self):  
    6.         ''''' 
    7.         @summary: 当使用reversed函数翻转对象时调用 
    8.         '''  
    9.         ret = []  
    10.         for i in range(self.num):  
    11.             ret.append(self.num - i-1)  
    12.         return ret  
    13.       
    14. if __name__ == "__main__":  
    15.     print reversed(A(10))  

    输出:

    [python] view plain copy
     
    1. [9, 8, 7, 6, 5, 4, 3, 2, 1, 0]  


    __contains__():当使用in,not in 对象的时候 调用(not in 是在in完成后再取反,实际上还是in操作)

    [python] view plain copy
     
    1. class A(object):  
    2.     def __init__(self,num):  
    3.         self.num = num  
    4.       
    5.     def __contains__(self, item):  
    6.         ''''' 
    7.         @summary:当使用in,not in 对象的时候 ,not in 是在in完成后再取反,实际上还是in操作 
    8.         '''  
    9.         print "__contains__:%s is in?"%item  
    10.         if item < self.num and item >= 0:  
    11.             return True  
    12.         return False  
    13.       
    14. if __name__ == "__main__":  
    15.     if in A(10):print "True"  
    16.     else:print False  
    17.     if not in A(10):print "True"  
    18.     else:print False  

    输出:

    [python] view plain copy
     
      1. __contains__:is in?  
      2. True  
      3. __contains__:is in?  
      4. False  
  • 相关阅读:
    Android学习笔记03:学习过程中碰到的一些问题及解决方法
    写于莫言获得诺贝尔文学奖之际
    Windows环境下QT学习笔记01:QT及QT Creator的下载及安装
    Android学习笔记02:AndroidManifest.xml源码
    Android学习笔记01:开发环境搭建
    怀念我的大学四年
    喜获TI MSP430 LaunchPad开发板
    Win7下VS2008破解方法
    手把手教你把Vim改装成一个IDE编程环境
    顺序线性表
  • 原文地址:https://www.cnblogs.com/RENQIWEI1995/p/8196253.html
Copyright © 2011-2022 走看看