首页 菜鸟问答正文

Python里到底什么才算method?

piaodoo 菜鸟问答 2022-08-15 01:40:16 973 0

先从最初的问题开始说起,在Python中,凡是符合(类).(名称)为callable的,例如B.myfunc,都可以叫做method。如果B有个实例b,则它们都可以通过b.myfunc()的形式来调用。有的时候,如果b的某个成员为callable,但不是来自类B,也可以认为形式上是一个method,可以理解为一种假的method,这里暂不包括在内。

nethod的区别在于它们响应__get__的方式。完全不响应的是staticmethod,通过实例调用时没有额外参数;附加类为参数的叫classmethod,不仅可以通过b.myfunc()调用,B.myfunc()也会自动加上类作为参数。最后最常见的也就是instancemethod,从实例调用时自动附近实例作为第一个参数。

系统库这里是使用instancemethod的等价形式调用,这没有问题,因为语法规定__exit__本就应该是instancemethod,而你的__exit__是个boundmethod,不支持__get__,实际相当于staticmethod,自然就不匹配了,使用with不报错只是这一版实现偶然支持而已。

版权声明:

本站所有资源均为站长或网友整理自互联网或站长购买自互联网,站长无法分辨资源版权出自何处,所以不承担任何版权以及其他问题带来的法律责任,如有侵权或者其他问题请联系站长删除!站长QQ754403226 谢谢。

有关影视版权:本站只供百度云网盘资源,版权均属于影片公司所有,请在下载后24小时删除,切勿用于商业用途。本站所有资源信息均从互联网搜索而来,本站不对显示的内容承担责任,如您认为本站页面信息侵犯了您的权益,请附上版权证明邮件告知【754403226@qq.com】,在收到邮件后72小时内删除。本文链接:https://www.piaodoo.com/119211.html

社交距离(socialdistance)

  • 表距离还在用distance吗?其实你还有其他选择

    表距离还在用distance吗?其实你还有其他选择

  • △5日,海南三亚,核酸检测有序开展。

  • 全国疫情今天(8月6日)最新消息通报:昨日本土新增310+275,其中海南262+46

  • 北京疫情地图分布图实时更新(查询入口)

    北京疫情地图分布图实时更新(查询入口)

  • 搜索

    文章专栏

    最近发表

    标签列表