淘先锋技术网

首页 1 2 3 4 5 6 7

Python的类魔法序列是一组特殊方法,它们用于在类定义中处理序列操作。这些方法允许我们自定义我们的类的行为,以便它可以像Python的内置序列一样进行操作。以下是一些常用的类魔法序列:

__len__(self)
__getitem__(self, index)
__setitem__(self, index, value)
__delitem__(self, index)
__iter__(self)
__reversed__(self)
__contains__(self, item)

__len__(self)方法返回序列中元素的数量。它应该以整数的形式返回序列的长度。例如:

class MySequence:
def __init__(self, data):
self.data = data
def __len__(self):
return len(self.data)
seq = MySequence([1, 2, 3, 4])
print(len(seq)) # 输出 4

__getitem__(self, index)方法允许我们像列表一样访问序列中的元素。它接收一个索引并返回对应元素。例如:

class MySequence:
def __init__(self, data):
self.data = data
def __getitem__(self, index):
return self.data[index]
seq = MySequence([1, 2, 3, 4])
print(seq[1]) # 输出 2

__setitem__(self, index, value)方法允许我们像列表一样修改序列中的元素。它接收一个索引和一个值,并使用该值替换对应位置的元素。例如:

class MySequence:
def __init__(self, data):
self.data = data
def __setitem__(self, index, value):
self.data[index] = value
seq = MySequence([1, 2, 3, 4])
seq[1] = 5
print(seq.data) # 输出 [1, 5, 3, 4]

__delitem__(self, index)方法允许我们从序列中删除一个元素。它接收一个索引并删除对应位置的元素。例如:

class MySequence:
def __init__(self, data):
self.data = data
def __delitem__(self, index):
del self.data[index]
seq = MySequence([1, 2, 3, 4])
del seq[1]
print(seq.data) # 输出 [1, 3, 4]

__iter__(self)方法允许我们在序列上进行迭代。它应该返回一个可迭代对象。例如:

class MySequence:
def __init__(self, data):
self.data = data
def __iter__(self):
return iter(self.data)
seq = MySequence([1, 2, 3, 4])
for i in seq:
print(i) # 输出 1 2 3 4

__reversed__(self)方法允许我们逆序迭代序列。它应该返回一个可逆序迭代对象。例如:

class MySequence:
def __init__(self, data):
self.data = data
def __reversed__(self):
return reversed(self.data)
seq = MySequence([1, 2, 3, 4])
for i in reversed(seq):
print(i) # 输出 4 3 2 1

__contains__(self, item)方法允许我们检查序列中是否包含特定元素。它应该返回一个布尔值。例如:

class MySequence:
def __init__(self, data):
self.data = data
def __contains__(self, item):
return item in self.data
seq = MySequence([1, 2, 3, 4])
print(3 in seq) # 输出 True