我是 Python 新手,熟悉 Java 和 C#,所以下面的代码可能完全不是 Pythonic。
我正在尝试获取我的类向量实例的索引值,其中它包含的整数列表名为 vec。
class Vector:
def __init__(self,*args,**kwargs):
if(args and args.length()>=2):
self.dimension=args[0]
self.vec=args[1]
elif(kwargs):
if(kwargs.get('vec')):
self.vec=kwargs.get('vec')
self.dimension=len(self.vec)
elif(kwargs.get('n')):
self.dimension=kwargs.get('n')
nulllist=[]
for x in range(0,kwargs.get('n')):
nulllist.append(0)
self.vec=nulllist
def __getitem__(v,i):
if(v.vec[i]):
return v.vec[i]
else:
return "None"
当我试图得到
v0 = Vector(n=2)
assert(v0[0] == 0)
我收到断言错误,因为 v0[0] 返回“无”
如果我打印(v0[0]) 打印输出是“无”
我做错了什么?
非常感谢。
最佳答案
零的 bool 解释是错误的。所以你的 if(v.vec[i]):
如果 v.vec[i]
为假为零,并且 if
块不会被输入。
目前尚不清楚您试图用该测试什么 if
反正。如果您试图测试该元素是否存在,则不会这样做。您最好执行以下操作:
try:
return v.vec[i]
except IndexError:
return None
(也不确定你为什么要返回
"None"
而不是 None
,但如果你愿意,你当然可以调整我的例子来做到这一点。)
关于Python 实例和类命名空间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41191049/