我需要编写一个具有以下标准的类构造函数:
构造函数应该只接受一个参数。如果此参数是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
语句中添加错误,其中包含int
或long
,这是一个值错误,{{1} else
的语句:
TypeError
我不知道该怎么做。
答案 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