gpt4 book ai didi

python - 设置异常时避免递归

转载 作者:行者123 更新时间:2023-11-30 22:05:39 26 4
gpt4 key购买 nike

我正在尝试做一些相对简单的事情 - 采用 OrderedDict 类并赋予它基于整数或切片查找值的能力。所以如果我有以下内容

from collections import OrderedDict

test_dict = OrderedDict()
test_dict['a'] = 'value a'
test_dict['b'] = 'value b'
test_dict['c'] = 'value c'

test_dict[:2]

理想情况下会给出结果

['value a','value b']

为此,我尝试对 OrderedDict 进行子类化,然后重写其 getitem 方法。我所拥有的是以下内容:

class indexed_dict(OrderedDict):
def __init__(self):
pass

def __getitem__(self, key):
try:
return list(self)[key]
except TypeError: # Because we've entered a number instead of a key
return self[key]

这样做的问题是,如果您尝试正常使用它 - 例如 test_indexed_dict['a'] - 解释器开始递归,大概是因为 except 子句要求它运行 getitem。是否有更好的错误处理方法不会产生此问题?

预先感谢您的帮助。

最佳答案

除了 @Aran_Fey 的答案之外,您还需要检查第一个 try 中的值,因此函数将是:

def __getitem__(self, key):
try:
return list(self.values())[key]
except TypeError:
return super().__getitem__(key)

全类同学:

class IndexedDict(OrderedDict):
def __init__(self):
pass

def __getitem__(self, key):
try:
return list(self.values())[key]
except TypeError:
return super().__getitem__(key)

@Netwave 的答案中无法添加任何内容。

关于python - 设置异常时避免递归,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52941324/

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