首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

__getitem__

实现了__iter__()的实例虽能用于for循环,看似像list,但并不能将其当做list来使用,比如,Fib()[5]还是报错 可通过实现__getitem__()方法,;来实现让实例像list...那样按照下标取出元素 实现按照下标取元素 class Fib(object): def __getitem__(self, n): a, b = 1,...#输出:2 f[3] #输出:3 f[10] #输出:89 f[100] #输出:573147844013817084101 实现切片功能   __getitem...__()传入的参数可能是一个int,也可能是一个切片对象slice,因此需要做判断   如果把对象看成dict,__getitem__()的参数也可能是一个可以作key的object,例如str..., 5] f[:10] #输出:[1, 1, 2, 3, 5, 8, 13, 21, 34, 55] #该例没有对step参数作处理,也没有对负数作处理,所以,要正确实现一个__getitem

68810
您找到你想要的搜索结果了吗?
是的
没有找到

Python面向对象编程-魔术方法-__len__和__getitem__方法

其中,__len__和__getitem__方法是常用的魔术方法之一。这两个方法都是用于操作序列对象的,但它们的作用略有不同。...__getitem__方法用于获取序列对象中指定索引位置的元素,通常使用中括号[]运算符调用。该方法接收一个索引作为参数,并返回序列对象中指定索引位置的元素。...接着,我们实现了__len__和__getitem__方法。在__len__方法中,我们返回了MyList对象的长度。...需要注意的是,在实现__getitem__方法时,我们对传入的索引值进行了检查,如果超出了序列对象的范围,就抛出了IndexError异常。这是为了确保程序的正确性和健壮性。...此外,在实现__getitem__方法时,还可以使用切片操作符[:]来获取序列对象的一部分元素。

790142

解决pyhton object is not subscriptable

检查对象是否实现了​​__getitem__()​​方法如果你正在操作的是一个自定义类的实例,你需要确保该类实现了​​__getitem__()​​方法来支持下标操作。​​...__getitem__()​​方法定义了下标操作返回的结果。...方法定义和用法​​__getitem__()​​方法定义在类中,并且接受一个参数,用于指定要访问的下标或键。根据下标或键的不同,​​__getitem__()​​方法可以有不同的实现。...同样,可以通过实现​​__getitem__()​​方法来支持使用键访问属性。...__getitem__()​​方法也可以接受多个参数,用于实现更复杂的下标访问。例如,可以在类中实现​​__getitem__(self, key1, key2)​​来支持使用多个键访问属性或元素。

1.2K41

Python进阶:自定义对象实现切片功能

1、魔术方法:__getitem__() 想要使自定义对象支持切片语法并不难,只需要在定义类的时候给它实现魔术方法 __getitem__() 即可。所以,这里就先介绍一下这个方法。...interpretation of negative indexes (if the class wishes to emulate a sequence type) is up to the __getitem...概括翻译一下:__getitem__() 方法用于返回参数 key 所对应的值,这个 key 可以是整型数值和切片对象,并且支持负数索引;如果 key 不是以上两种类型,就会抛 TypeError;如果索引越界...特别需要说明的是,此例中的 __getitem__() 方法会根据不同的参数类型而实现不同的功能(取索引位值或切片值),也会妥当地处理异常,所以并不需要我们再去写繁琐的处理逻辑。...4、小结 本文介绍了__getitem__()魔术方法,并用于实现自定义对象(以列表类型和字典类型为例)的切片功能,希望对你有所帮助。

94350

Python里最神秘的一个魔法函数

__()取不到值时会被调用,但是,我不经意间还发现了一个细节:__getitem__()在取不到值时,并不一定会调用__missing__()。...__missing__() 是魔术方法的“二等公民”,它没有独立的调用入口,只能被动地由 __getitem__() 调用,即__missing__() 依赖于__getitem__()。...__missing__() 依赖于__getitem__(),才能实现方法调用;而 __getitem__() 也要依赖 __missing__(),才能实现完整功能。...为了实现这一点,__getitem__()在解释器代码中开了个后门,从 C 语言界面折返回 Python 界面,去调用那个名为“__missing__”的特定方法。...为了让字典类型有更强大的表现(或者说让__getitem__()作出 get() 那样的表现),Python 让字典的子类可以定义__missing__(),供__getitem__()查找调用。

41650
领券