2017-10-28 13 views
3

我有一个类需要有变量,它是列表并包含点,它们表示形状中的顶点。如何获取python中的点类型列表

我正在写一个点以这种方式:A = [X,Y]

那么点的名单将在列表(表)?

这是我的顶点设定装置:

def set_vertices(self, vertices): 
    if not isinstance(vertices, list(list)): 
     raise TypeError("vertices must be list of points") 
    self.__vertices = vertices 

但pycharm告诉我,名单(名单)应改为: “联盟[类型,元组]”

和验证码:

f = Figure(self.position); 
f.set_vertices([[2, 2], [2, 2], [2, 2], [2, -2]]) 

引发了一个异常:TypeError: 'type' object is not iterable

回答

1

这是因为list(list)在Python中不是有效的类型,我们必须找到一种不同的方法来检查vertices是否属于所需的类型 - 即列表列表。这个怎么样?

if not isinstance(vertices, list) or not all(isinstance(v, list) for v in vertices): 
    raise TypeError("vertices must be list of points") 

而且,如果考虑空单是你的使用情况的有效输入,以及是否要检查每个点都有正好两个整数坐标。

但最重要的是,仔细想想为什么要检查输入类型。 Python是一种动态类型的语言,手动检查输入是否符合其他语言中预期的类型没有什么意义;如果输入类型在任何方面都是错误的,它会在运行时产生一个错误,这很好 - 它是easier to ask for forgiveness than permission,这也适用于类型检查。

相关问题