「这是我参与2022首次更文挑战的第16天,活动详情查看:2022首次更文挑战」
前言
继上一篇Python 魔术方法解析中,我们对 Python 常见的魔术方法,有创建类时需要用到的构造方法__init__()、析构方法__del__(),还有with上下文管理器中需要使用__enter__()进入上下文件运行时、__exi t__()退出上下文运行时操作。
Python 魔术方法,是创建定义类对象使用的,不能被单独调用。在Python解释器中,默认情况下自动执行,在需要个性化功能时,我们可以对其方法进行重写。
Python 数据类型分为可变数据类型和不可变数据类型。
对于Python 序列中,list、dict、set 属于可变序列,元组不可变序列。
当Python内置提供的序列不满足我们实际需求时,我们可以使用Python 魔法方法进行个性化容器定制。
本期,我们将学习Python 魔法方法进行个性化定制序列容器,Let‘s go~~
1. 序列相关方法
Python 序列中,最重要的特征是可包含多个元素,魔法方法有几个关于序列的方法。
__len__(self): 返回序列中元素的个数__getitem__(self,key): 获取指定索引对应的元素。该key是整数值或者slice对象,否则该方法会引发KeyError.__contains__(self,item): 判断序列是否包含指定元素__setitem__(self,key,value): 设置指定索引对应的元素。该方法的key是整数值或slice对象,否则引发KeyError异常__delitem__(self,key): 删除指定索引对应的元素
2. 创建可变序列
如果我们要创建可变序列时,我们需要实现如下方法:
- 我们需要重写
__len__()计算出序列个数和__getitem__()获取指定索引对应的元素。 - 还需要重写定义
__setitem__()和__delitem__()
class mylist:
def __init__(self,*args):
self.values = [x for x in args]
print(self.values)
self.count = {}.fromkeys(range(len(self.values)),0)
def __len__(self):
return len(self.values)
def __getitem__(self, key):
self.count[key] +=1
return self.values[key]
3. 创建不可变序列
Python中,我们要实现不可变序列,只需要实现两个方法:
__len__()__getitem__()
总结
本期,我们学习使用Python 魔法方法实现个性化序列。Python 魔法方法提供关于5种方法,实现不可变序列只需要实现__len__()和__getitem__()方法。
以上是本期内容,欢迎大佬们点赞评论,下期见~~