Python 实例和类命名空间

标签 python class namespaces instance scopes

我是 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/

相关文章:

python - 将多个 csv 文件读取到单独的 pandas 数据帧中

python - 识别仅由数字组成的字符串

python - Tkinter 的 overrideredirect 阻止了 Mac 和 Linux 中的某些事件

java - "Synonyms"类

C# 在类之间传递数据

c++ - "Only static constant integral variables may be initialized within a class "

c# - 在 Unity UWP 应用程序中找不到命名空间 'Windows'

VBA - 导入命名空间?

vb.net - 逗号分隔命名空间名称 - 如何使用它?

python - 使用python3中的For循环在sqlite3中创建3列x 10行表