我正在创建一个矢量类,其中一个参数是矢量的长度。如果用户未输入长度,则长度自动为0。但是,如果为矢量指定了长度,则每个数字都将设置为0.例如:v(5)
为[0,0,0,0,0]
,v()
为[]
。
这是我到目前为止的代码,但它并不是很有效。有什么建议吗?
class V:
def __init__(self, length = 0):
self.vector = [0]*length
def __str__(self):
print(self.vector)
def __len__(self):
return len(self.vector)
然后我插入a = V() b = V(5)
,当我print(a)
和print(b)
时,我得到一个TypeError。有什么建议吗?
答案 0 :(得分:2)
我可能会作弊并去分类list
:
class V(list):
def __init__(self, length=0):
super(V, self).__init__([0] * length)
通过这种方式,您可以免费获得长度,代表和其他礼物。
答案 1 :(得分:1)
class V:
def __init__(self, length = 0):
self.data = [0]*length
def __str__(self):
return '[{}]'.format(', '.join(str(d) for d in self.data))
def __len__(self):
return len(self.data)