python中->的用法

本文讲述了在修改第三方库时遇到的特殊符号->的用法,它用于def关联class,使得def可以访问class内部方法。然而,调用时需objeck支持,否则会引发错误。没有->时,方法关联和调用功能受限。
摘要由CSDN通过智能技术生成

        能够被这个问题吸引过来的程序员要么是准备自己开发第三方插件的,要么就是打算魔改第三方库插件的,毕竟->也就在第三方库的模块里比较常见,因此基础语法里不常见,也不常用,所以我就在这里讲一下->的用法。

        起初我也是因为魔改第三方库的时候碰到了->的代码,但是我去微软浏览器的国内和国外都看了,都没找到->的用法,随后我就把拆包后的代码剪切走了一部分进行了测试,发现了一个规律。

->用于def关联class用,且关联后的def能检测到class内部的所有方法,但是调用的话就非常麻烦了,需要objeck能识别到(应该是这样),示例:

在这个示例代码里,_Device类里的coo方法是我自己后来加进去的,方便后面测验用。

这里我们就可以对connect方法进行调用,然后就是调用的时候写入connect().后会出现window_size()方法和coo()方法,回车后objcek变成connect().coo(),并且coo()下面还没有红色波浪线,但是执行的话就会报错说

AttributeError: 'NoneType' object has no attribute 'coo'

但是调用的coo方法换成window_size的话就不会提示说 方法没有coo,因为在最上面的_BaseClient加了一个参数objeck,objeck支持自己的window_size方法,但不支持咱们自己创建的coo方法,所以调用的时候用connect().window_size("hello")的话会返回这样的报错提示

AttributeError: 'str' object has no attribute 'http'

这样报错的原因是因为参数不正确。

倘若把_BaseClient里的objeck(即 类的参数)删除掉的话那么再执行的话报错结果就是

AttributeError: 'NoneType' object has no attribute 'window_size'

也就是说->的调用需要objeck的支持,下面就来说说没有->的 类 关联的话会怎样。

上面的看完了基本上都知道没有->的话def方法就没办法和其他class类进行关联,因此也无法获取/检测其他类里的方法,比如上面的示例代码,加上->的话再connect()加.会出现coo()和window_size等的选项,而没有->的话connect后面加上.也不会出现coo()和window_size的选项,只有其他函数的选项,就算手动打出来connect().coo(),那么coo()下面也会有红色波浪线,原因是因为connect方法里没能找到coo()的相关信息。

  • 10
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值