內建函数重写
方法名 | 函数名 |
---|---|
def __abs__(self): | abs(obj) 函数调用 |
def __len__(self): | len(obj) 函数调用 |
def __reversed__(self): | reversed(obj) 函数调用 |
示例:
class Mylist():
'''这是一个自定义的列表类型,此类型的对象是
用data属性绑定的列表来存储数据'''
def __init__(self, iterable=()):
self.data = [x for x in iterable]
myl = Mylist([1, -2, 3, -4])
print(myl)
# 默认返回 <__main__.Mylist object at 0x7f73e79497b8>
# 如何返回一个直观的 列表,改写repr方法即可
print('---------------repr----len--------------------------')
# 重写 __repr__() 方法, __len__() 方法
class Mylist():
'''这是一个自定义的列表类型,此类型的对象是
用data属性绑定的列表来存储数据'''
def __init__(self, iterable=()):
self.data = [x for x in iterable]
def __repr__(self):
return 'Mylist(%s)' % self.data
def __len__(self):
return len(self.data)
myl = Mylist([1, -2, 3, -4])
print(myl)
# 结果为 Mylist([1, -2, 3, -4])
print(len(myl))
# 结果为 4 是由 __len__()方法 返回的数值
print('------------------abs----------------------------------')
# 重写 __abs__() 方法 返回列表,里面的数都取绝对值
class Mylist():
'''这是一个自定义的列表类型,此类型的对象是
用data属性绑定的列表来存储数据'''
def __init__(self, iterable=()):
self.data = [x for x in iterable]
def __abs__(self):
data = [abs(x) for x in self.data]
return 'Mylist(%s)' % data # Mylist(data)
myl = Mylist([1, -2, 3, -4])
print(abs(myl))
# 结果为 Mylist([1, 2, 3, 4])
print('----------------reversed-------------------------------')
# 重写 __reversed__() 方法,返回倒序列表
class Mylist():
'''这是一个自定义的列表类型,此类型的对象是
用data属性绑定的列表来存储数据'''
def __init__(self, iterable=()):
self.data = [x for x in iterable]
def __reversed__(self):
data = self.data[::-1]
return 'Mylist(%s)' % data
myl = Mylist([1, -2, 3, -4])
print(reversed(myl))
# Mylist([-4, 3, -2, 1])