Python 个实例和 class 个命名空间
Python instance and class namespaces
我是 Python 的新手并且熟悉 Java 和 C#,所以下面的代码可能完全不是 Pythonic 的。
我正在尝试获取 Class Vector 实例的索引值,其中包含的整数列表名为 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] returns "None"
如果我 print(v0[0]) 打印输出是 "None"
我做错了什么?
提前致谢。
零的布尔解释为假。因此,如果 v.vec[i]
为零,您的 if(v.vec[i]):
将为假,并且不会输入 if
块。
目前尚不清楚您试图用 if
测试什么。如果您试图测试该元素是否存在,那将无法做到。你最好做这样的事情:
try:
return v.vec[i]
except IndexError:
return None
(也不确定您为什么要返回 "None"
而不是 None
,但如果您愿意,您当然可以调整我的示例来做到这一点。)
您应该在构造函数中初始化 self.vec(对于未调用 if 和 elif 的情况)。
class Vector:
def __init__(self,*args,**kwargs):
self.vec = None
...
v0 = Vector(n=2)
if v0.vec is not None:
print('Vector defined')
else:
print('ERROR: No Vector !')
我是 Python 的新手并且熟悉 Java 和 C#,所以下面的代码可能完全不是 Pythonic 的。 我正在尝试获取 Class Vector 实例的索引值,其中包含的整数列表名为 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] returns "None" 如果我 print(v0[0]) 打印输出是 "None"
我做错了什么? 提前致谢。
零的布尔解释为假。因此,如果 v.vec[i]
为零,您的 if(v.vec[i]):
将为假,并且不会输入 if
块。
目前尚不清楚您试图用 if
测试什么。如果您试图测试该元素是否存在,那将无法做到。你最好做这样的事情:
try:
return v.vec[i]
except IndexError:
return None
(也不确定您为什么要返回 "None"
而不是 None
,但如果您愿意,您当然可以调整我的示例来做到这一点。)
您应该在构造函数中初始化 self.vec(对于未调用 if 和 elif 的情况)。
class Vector:
def __init__(self,*args,**kwargs):
self.vec = None
...
v0 = Vector(n=2)
if v0.vec is not None:
print('Vector defined')
else:
print('ERROR: No Vector !')