我想得到像v:[1.0, 2.0, 3.0]
这是我的代码:
class VECTOR(list) :
def _init_ (self,x=0.0,y=0.0,z=0.0,vec=[]) :
list._init_(self,[float(x),float(y),float(z)])
if vec :
for i in [0,1,2] :
self[i] = vec[i]
但是当我输入时:a = VECTOR(1,2,3)
它出了问题:
TypeError:list()最多需要1个参数(给定3个)
我该如何解散它?
答案 0 :(得分:23)
问题是你拼错了构造函数的名字。将_init_
替换为__init__
。
这是固定代码:
class VECTOR(list) :
def __init__ (self,x=0.0,y=0.0,z=0.0,vec=[]) :
list.__init__(self,[float(x),float(y),float(z)])
if vec :
for i in [0,1,2] :
self[i] = vec[i]
a = VECTOR(1,2,3)
print(a)
并证明它有效:
% python test.py
[1.0, 2.0, 3.0]
我还想再给你一些评论:
super
(参见paddyg的回答); 编辑说明:我已在此解决方案中添加了评论中的相关建议。
答案 1 :(得分:-2)
EDIT
如果您使用super(VECTOR, list).__init__()
致电,则无需通过自我。 你还需要传递1,2,3作为列表[1,2,3]