gpt4 book ai didi

python - list() 最多接受 1 个参数(给定 3 个)

转载 作者:太空狗 更新时间:2023-10-29 20:37:07 24 4
gpt4 key购买 nike

我想得到这样的向量: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() takes at most 1 argument (3 given)

我怎样才能解散它?

最佳答案

问题是您拼错了构造函数的名称。将 _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]

我还想给你一些额外的评论:

  • 你应该根据PEP8修正编码风格(这是每个 Python 开发人员都应该完整阅读的文档);
  • 您可能可以做一些更 Pythonic 的事情(感谢 Benjamin);
  • 继承并不是唯一的方法,您还可以使用属性来存储列表并定义相关方法(感谢 Veedrac);
  • 你也可以使用super(见paddyg的回答);

编辑说明:我已将评论中的相关建议添加到此解决方案中。

关于python - list() 最多接受 1 个参数(给定 3 个),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30070358/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com