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

    __len__():当使用len(A)该对象时调用该方法,当没有该方法是会报错,且返回数据不为整数也会报错
    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))
    输出:
    1.  
      __len__
    2.  
      10

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

    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))
    输出:
    [9, 8, 7, 6, 5, 4, 3, 2, 1, 0]

    __contains__():当使用in,not in 对象的时候 调用(not in 是在in完成后再取反,实际上还是in操作)
    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 3 in A(10):print "True"
    16.  
      else:print False
    17.  
      if 3 not in A(10):print "True"
    18.  
      else:print False
    输出:
    1.  
      __contains__:3 is in?
    2.  
      True
    3.  
      __contains__:3 is in?
    4.  
      False




  • 相关阅读:
    C语言基础知识-程序流程结构
    C语言基础知识-运算符与表达式
    Cloudera Certified Associate Administrator案例之Configure篇
    Python入门篇-文件操作
    gif软件(ShareX)
    BareTail(日志查看工具)
    [UGUI]游戏中的Tips贴图标边缘显示(贴边)
    Lua中的#
    ugui SetParent在安卓上一个诡异bug
    .svn文件夹特别大
  • 原文地址:https://www.cnblogs.com/taosiyu/p/12359993.html
Copyright © 2011-2022 走看看