__len__():當使用len(A)該對象時調用該方法,當沒有該方法是會報錯,且返回數據不為整數也會報錯
- class A(object):
- def __init__(self,num):
- self.num = num
- self.start_num = -1
- def __len__(self):
- '''''
- @summary: 當使用len(Test)該對象時調用該方法,當沒有該方法是會報錯,且返回數據不為整數也會報錯
- '''
- print "__len__"
- return self.num - self.start_num - 1
- if __name__ == "__main__":
- print len(A(10))
輸出:
- __len__
- 10
__reversed__():當使用reversed函數翻轉對象時調用
- class A(object):
- def __init__(self,num):
- self.num = num
- def __reversed__(self):
- '''''
- @summary: 當使用reversed函數翻轉對象時調用
- '''
- ret = []
- for i in range(self.num):
- ret.append(self.num - i-1)
- return ret
- if __name__ == "__main__":
- print reversed(A(10))
輸出:
- [9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
__contains__():當使用in,not in 對象的時候 調用(not in 是在in完成后再取反,實際上還是in操作)
- class A(object):
- def __init__(self,num):
- self.num = num
- def __contains__(self, item):
- '''''
- @summary:當使用in,not in 對象的時候 ,not in 是在in完成后再取反,實際上還是in操作
- '''
- print "__contains__:%s is in?"%item
- if item < self.num and item >= 0:
- return True
- return False
- if __name__ == "__main__":
- if 3 in A(10):print "True"
- else:print False
- if 3 not in A(10):print "True"
- else:print False
輸出:
- __contains__:3 is in?
- True
- __contains__:3 is in?
- False