gpt4 book ai didi

python - Python __setitem__ 使用多个键时发生奇怪的事情

转载 作者:太空狗 更新时间:2023-10-30 01:53:45 24 4
gpt4 key购买 nike

我不想在使用 __setitem__ 时测试键的类型。但奇怪的是,我发现使用多个键时,部分代码被省略了。这是我的测试类:

class foo():
def __init__(self):
self.data=[[1,2],[3,4],[5,6]]

def __getitem__(self, key):
return self.data[key]

def __setitem__(self, key, value):
print('Key is {0}, type of key is {1}'.format(key,type(key)))
self.data[key] = value

f = foo()

当使用一个键时就可以了:

>>>f[1] = [0,0]
Key is 1, type of key is <class 'int'>
>>>f[1]
[0, 0]

当使用两个键时,结果是正确的,但是为什么什么也没有打印出来

>>>f[1][1] = 100

>>>f[1][1]
100

我是 python 的新手,任何建议都将不胜感激!

最佳答案

f[1][1] = 0 等同于

f.__getitem__(1).__setitem__(1, 0)

它在您的自定义类上调用 __getitem__;这将返回 [0, 0][3, 4] 或存储在 f[1] 中的任何内容;在任何情况下,这个值都是一个普通的 Python list;然后调用此 list 上的 __setitem__list.__setitem__ 不打印任何内容。

关于python - Python __setitem__ 使用多个键时发生奇怪的事情,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36150061/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com