Python 使用列表处理索引器异常

Python 使用列表处理索引器异常,python,python-3.x,Python,Python 3.x,我目前正在学习Python,我有一个练习,您必须处理异常。这个函数的目标是当给定键的值不在列表“self.data”的范围内时引发异常 这是我应该在函数中输入的内容来测试它: v = Vecteur(-9, -6, 2, 3, -2) v[-1] 现在我应该找一个索引器 你们中有谁能在这个问题上给我指点一下吗 提前谢谢 您的问题源于这样一个事实:您正在捕获索引器,然后打印,然后让执行失败 我会这样做: class Vecteur: def __init__(self, *valeurs

我目前正在学习Python,我有一个练习,您必须处理异常。这个函数的目标是当给定键的值不在列表“self.data”的范围内时引发异常

这是我应该在函数中输入的内容来测试它:

v = Vecteur(-9, -6, 2, 3, -2)
v[-1]
现在我应该找一个索引器

你们中有谁能在这个问题上给我指点一下吗


提前谢谢

您的问题源于这样一个事实:您正在捕获索引器,然后打印,然后让执行失败

我会这样做:

class Vecteur:
    def __init__(self, *valeurs):
        self.data = list(valeurs)

    def __getitem__(self,key):    

        try:
           return self.data[key]
        except IndexError:
            raise IndexError('indice invalide pour ce vecteur')

    def __setitem__(self,key,item):
        self.data[key] = item
顺便说一下,
-1
是一个有效的索引。因此,您可能需要更改您的
\uuu getitem\uuu

def __getitem__(self, key):
    if key < 0:
        raise ValueError("Index has to be greater than 0")
    # the rest of your __getitem__ here
def\uuu getitem\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu
如果键<0:
提升值错误(“索引必须大于0”)
#剩下的_ugetItem在这里

为什么要解包
*valeurs
然后用
列表(valeurs)
再次打包?…直接将其传递给
self.data
,您在这里的具体问题是什么?感谢您这么快的回复,我将编辑我的帖子以澄清这一点:)记住,负面索引在Python中是有效的,所以您的代码工作正常
def __getitem__(self, key):
    if key < 0:
        raise ValueError("Index has to be greater than 0")
    # the rest of your __getitem__ here