Python 特殊方法:容器与序列操作基础(一)
本文讲解容器协议的核心方法,包括 __len__、__getitem__、__setitem__、__delitem__ 和 __contains__,展示如何通过这些方法让自定义类具备基本的容器功能,如获取长度、索引访问、元素赋值和删除以及成员检查。
__len__方法:
返回容器的长度,用于支持 len() 函数。例如,定义一个自定义容器类,实现 len 方法:
class MyList:
def __init__(self, data):
self.data = data
def __len__(self):
return len(self.data)
my_list = MyList([1, 2, 3])
print(len(my_list))
__getitem__方法:
实现通过索引或键访问容器元素,支持 [] 操作。例如,实现一个自定义字典类,通过键获取值:
class MyDict:
def __init__(self, data):
self.data = data
def __getitem__(self, key):
return self.data[key]
my_dict = MyDict({'a': 1, 'b': 2})
print(my_dict['a'])
__setitem__方法:
实现通过索引或键设置容器元素,支持 [] 赋值操作。例如,在自定义列表类中实现元素赋值:
class MyList:
def __init__(self, data):
self.data = data
def __setitem__(self, index, value):
self.data[index] = value
my_list = MyList([1, 2, 3])
my_list[1] = 10
print(my_list.data)
__delitem__方法:
实现通过索引或键删除容器元素,支持 del 操作。例如,在自定义列表类中实现元素删除:
class MyList:
def __init__(self, data):
self.data = data
def __delitem__(self, index):
del self.data[index]
my_list = MyList([1, 2, 3])
del my_list[1]
print(my_list.data)
__contains__方法:
实现 in 运算符的逻辑,用于判断元素是否在容器中。例如,在自定义集合类中实现成员检查:
class MySet:
def __init__(self, data):
self.data = data
def __contains__(self, item):
return item in self.data
my_set = MySet([1, 2, 3])
print(2 in my_set)
参考资料:
参考 Python 官方文档中关于容器类型的说明(https://docs.python.org/3/library/stdtypes.html#sequence-types-list-tuple-range ),结合 Tekin 的 Python 专栏中关于数据结构实践的文章( https://blog.csdn.net/tekin_cn/article/details/145797911 ),帮助读者理解这些方法在构建自定义容器类中的重要性。
总结:
本文总结了容器协议基础方法的定义和使用,强调它们是构建自定义容器类的基石,为后续学习更复杂的容器和序列操作奠定基础。
- TAG:Python、特殊方法、容器协议、序列操作、索引访问
浙公网安备 33010602011771号