Vector类构造函数参数

时间:2016-03-01 05:47:42

标签: python

我需要编写一个具有以下标准的类构造函数:

构造函数应该只接受一个参数。如果此参数是int或long或从其中一个派生的类的实例,则将此参数视为Vector的长度。在这种情况下,构造一个指定长度的Vector,每个元素初始化为0.0。如果长度为负,请使用适当的消息引发ValueError。如果参数不被认为是长度,那么如果参数是序列(例如list),则使用具有给定序列的长度和值的向量进行初始化。如果参数未用作向量的长度,并且如果它不是序列,则使用适当的消息引发TypeError

我不确定如何编写相应的错误,我应该将此类用于错误:

class Failure(Exception):
    """Failure exception"""
    def __init__(self,value):
        self.value=value
    def __str__(self):
        return repr(self.value)

在交互式控制台:

>>> Vector(3)
Vector([0.0, 0.0, 0.0])
>>> Vector(3L)
Vector([0.0, 0.0, 0.0])
>>> Vector([4.5, "foo", 0])
Vector([4.5, 'foo', 0])
>>> Vector(0)
Vector([])
>>> Vector(-4)
Traceback (most recent call last):
  File "<stdin>", line 1, in ?
  File "vector.py", line 14, in __init__
    raise ValueError("Vector length cannot be negative")
ValueError: Vector length cannot be negative

这是我的代码。我只需要在if语句中添加错误,其中包含intlong,这是一个值错误,{{1} else的语句:

TypeError

我不知道该怎么做。

2 个答案:

答案 0 :(得分:0)

您可以尝试这样的事情

if type(value) == <type 'list'> :  

if type(value) == <type 'int'> :

等等,使用多个条件语句。

答案 1 :(得分:0)

class Vector:

    def __init__(self, obj):
        self.v = []
        if(isinstance(obj, (int, long)): # For Python3 use isinstance(obj, int)
            if(x < 0):
                # raise error
            else:
                self.v += [0.0] * x

        else:
            self.v += obj  # raises a type error is obj is not a sequence