为了账号安全,请及时绑定邮箱和手机立即绑定

函数,未绑定方法和绑定方法有什么区别?

函数,未绑定方法和绑定方法有什么区别?

人到中年有点甜 2019-09-21 14:54:08
我之所以问这个问题,是因为对该答案的评论主题进行了讨论。我有90%的方法可以解决问题。In [1]: class A(object):  # class named 'A'   ...:     def f1(self): pass   ...:In [2]: a = A()  # an instancef1 存在三种不同形式:In [3]: a.f1  # a bound methodOut[3]: <bound method a.f1 of <__main__.A object at 0x039BE870>>In [4]: A.f1  # an unbound methodOut[4]: <unbound method A.f1>In [5]: a.__dict__['f1']  # doesn't existKeyError: 'f1'In [6]: A.__dict__['f1']  # a functionOut[6]: <function __main__.f1>绑定方法,未绑定方法和函数对象之间的区别是什么,所有这些都由f1描述?一个人怎么称呼这三个物体?它们如何相互转化?关于这些东西的文档很难理解。
查看完整描述

3 回答

?
翻翻过去那场雪

TA贡献2065条经验 获得超13个赞

函数对象是由函数定义创建的可调用对象。绑定方法和未绑定方法都是由点二进制运算符调用的描述符创建的可调用对象。

绑定和未绑定的方法对象具有3个主要属性:im_func是在类中定义的函数对象,im_class是类以及im_self是类实例。对于未绑定的方法,im_selfNone

当绑定方法被调用时,它将im_funcim_self作为第一个参数的形式调用,然后是其调用参数。未绑定方法仅使用其调用参数来调用基础函数。


查看完整回答
反对 回复 2019-09-21
  • 3 回答
  • 0 关注
  • 466 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信