问一个关于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,这样写应该会给出提示:)
有什么问题随时在问答区提问就好了。加油!:)
072019-03-20
相似问题