• 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  
  • 相关阅读:
    103.Binary Tree Zigzag Level Order Traversal
    6.ZigZag Conversion
    102.Binary Tree Level Order Traversal
    interrupted()和isInterrupted()比较+终止线程的正确方法+暂停线程
    117.Populating Next Right Pointers in Each Node II
    Thread.currentThread()与this的区别
    116.Populating Next Right Pointers in Each Node
    UNIX 技巧: UNIX 高手的另外 10 个习惯
    UNIX 高手的 10 个习惯
    关于CGI:Tomcat、PHP、Perl、Python和FastCGI之间的关系
  • 原文地址:https://www.cnblogs.com/RENQIWEI1995/p/8196253.html
Copyright © 2020-2023  润新知