Python基础教程(第二版)例子程序__getitem__函数

简介: Python基础教程(第二版)例子程序__getitem__函数

Python基础教程例子9.3.1   使用第三版改写

写一个类,接受整数参数的索引,输出经过计算/调整后的value值。利用__getitem__函数实现。


有一件事要注意,python 3中只有int了,没有必要再写为:

if not isinstance(key, (int,long)  ):#type(key) == int:#ss

 

类Fib:写一个斐波那契数列类,利用__getitem__函数返回使得这个类更像一个索引列表而不是一个普通类。

def checkIndex(key):
    '''
    为了能被接受,键应该是一个非负整数,如果不是一个整数,会引发error;
    如果是复数,引发IndexError
    '''
    if not isinstance(key, int):#type(key) == int:#ss
        raise TypeError
    if key <0:
        raise indexError
class ArithmeticSequence(object):
    def __init__(self,start=0,step=1):
        self.start = start
        self.step = step
        self.changed = {}
    def __getitem__(self, key):
        '''
        Get an item from the arithmetic sequence.
        '''
        checkIndex(key)
        try:
            return self.changed[key]
        except KeyError:
            return self.start + key*self.step #...计算值)
    def __setitem__(self, key,value):
        '''
        修改算数序列中的一个项
        '''
        checkIndex(key)
        self.changed[key] = value # 保存更改后的值
    def __iter__(self):
        return self
class Fib(object):
    def __getitem__(self, n):
        a, b = 1, 1
        for x in range(n):
            a, b = b, a + b
        return a
s = ArithmeticSequence(1,2)
print(s[4])
s = Fib()
print(s[2])


目录
相关文章
|
8天前
|
存储 NoSQL 数据库连接
在Python程序中实现LevelDB的海量key的分批次扫描
通过本文的步骤,您可以在Python程序中实现对LevelDB海量key的分批次扫描。这样不仅能够有效地管理大规模数据,还可以避免一次性加载过多数据到内存中,提高程序的性能和稳定性。希望这篇指南能为您的开发工作提供实用的帮助。
51 28
|
7天前
|
Python
[oeasy]python057_如何删除print函数_dunder_builtins_系统内建模块
本文介绍了如何删除Python中的`print`函数,并探讨了系统内建模块`__builtins__`的作用。主要内容包括: 1. **回忆上次内容**:上次提到使用下划线避免命名冲突。 2. **双下划线变量**:解释了双下划线(如`__name__`、`__doc__`、`__builtins__`)是系统定义的标识符,具有特殊含义。
20 3
|
11天前
|
JSON 监控 安全
深入理解 Python 的 eval() 函数与空全局字典 {}
`eval()` 函数在 Python 中能将字符串解析为代码并执行,但伴随安全风险,尤其在处理不受信任的输入时。传递空全局字典 {} 可限制其访问内置对象,但仍存隐患。建议通过限制函数和变量、使用沙箱环境、避免复杂表达式、验证输入等提高安全性。更推荐使用 `ast.literal_eval()`、自定义解析器或 JSON 解析等替代方案,以确保代码安全性和可靠性。
24 2
|
27天前
|
安全 API C语言
Python程序的安全逆向(关于我的OPENAI的APIkey是如何被盗的)
本文介绍了如何使用C语言编写一个简单的文件加解密程序,并讨论了如何为编译后的软件添加图标。此外,文章还探讨了Python的.pyc、.pyd等文件的原理,以及如何生成和使用.pyd文件来增强代码的安全性。通过视频和教程,作者详细讲解了生成.pyd文件的过程,并分享了逆向分析.pyd文件的方法。最后,文章提到可以通过定制Python解释器来进一步保护源代码。
73 6
|
30天前
|
数据可视化 DataX Python
Seaborn 教程-绘图函数
Seaborn 教程-绘图函数
61 8
|
30天前
Seaborn 教程-主题(Theme)
Seaborn 教程-主题(Theme)
95 7
|
30天前
|
Python
Seaborn 教程-模板(Context)
Seaborn 教程-模板(Context)
48 4
|
21天前
|
Shell 开发工具 Python
如何在vim里直接运行python程序
如何在vim里直接运行python程序
|
3月前
|
数据可视化 IDE 开发工具
【Python篇】PyQt5 超详细教程——由入门到精通(中篇二)
【Python篇】PyQt5 超详细教程——由入门到精通(中篇二)
395 13
|
3月前
|
监控 数据可视化 搜索推荐
【Python篇】matplotlib超详细教程-由入门到精通(下篇)2
【Python篇】matplotlib超详细教程-由入门到精通(下篇)
52 8