问一个关于python语法的问题

来源:2-3 实现属于我们自己的向量

创ai灭世界

2019-03-20

vec = Vector([2,5])

此时的vec不是一个对象吗?为什么可以直接用vec[0] 这种写法。。

换句话说 vec.values[0] 那这种写法是错的吗

新手求教

顺便问一下bobo老师能否方便告诉我一下你的微信呢,想加个好友

谢谢

写回答

1回答

liuyubobobo

2019-03-20

因为我们实现了__getitem__方法。实现了__getitem__方法,就相当于重载了[],我们的类就可以使用[]的方法来做索引。如何索引的逻辑在__getitem__方法中:)

def __getitem__(self, index):    
    """取向量的第index个元素"""    
    return self._values[index]


你可以试试,将这个函数的定义删掉,会发生什么?:)


由于我们的实现中,value前有下划线(_value),代表着_values你想定义成私有成员变量。但是Python语言没有真正的私有变量这个概念,所以使用命名法标识。虽然语法上写vec._values[0]上没有问题,但是这样写不符合Python规范。如果你使用PyCharm,这样写应该会给出提示:)


有什么问题随时在问答区提问就好了。加油!:)

0
7
创ai灭世界
回复
liuyubobobo
ok,谢谢bobo老师耐心回复
2019-03-20
共7条回复

结合编程学数学 专为程序员设计的线性代数

创新设计,通俗易懂。编程结合数学,bobo带你彻底征服线性代数

3347 学习 · 372 问题

查看课程