请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

问一个关于python语法的问题

vec = Vector([2,5])

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

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

新手求教

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

谢谢

正在回答 回答被采纳积分+3

1回答

liuyubobobo 2019-03-20 11:37:57

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

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


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


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


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

0 回复 有任何疑惑可以回复我~
  • 提问者 创ai灭世界 #1
    回答得好迅速~哈哈,谢谢讲解
    那我再问一个关于学习方向的问题,我现在是小公司干php和前端的,对python的ai这个东西非常感兴趣,目前的小目标就是自学,然后做几个帮我玩小游戏的ai(脚本外挂?哈哈),如果可以的话以后也想往这方面发展,在学习方向方面bobo老师有什么建议吗
    回复 有任何疑惑可以回复我~ 2019-03-20 11:54:42
  • liuyubobobo 回复 提问者 创ai灭世界 #2
    你说的“这方面”是指什么方面?外挂行业还是ai行业?
    回复 有任何疑惑可以回复我~ 2019-03-20 11:57:14
  • 提问者 创ai灭世界 回复 liuyubobobo #3
    人工智能领域,我所谓的外挂只不过是现在想通过人工智能,来替我玩游戏,例如开发个小程序,侠盗飞车5自动驾驶这种的。大方向还是人工智能方向
    回复 有任何疑惑可以回复我~ 2019-03-20 13:37:32
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信