python中的绑定方法

时间:2013-08-22 02:16:30

标签: python oop

>>> class Class:
...     def method(self):
...         print 'I have a self!'
... 
>>> def function():
...     print "I don't..."
... 
>>> instance = Class()
>>> instance.method()
I have a self!
>>> instance.method = function
>>> instance.method()
I don't...

好的,本书引用'自我参数(在上一节中提到)实际上是区分方法的原因 从功能。方法(或者,更技术上,绑定方法)具有它们的第一个参数 绑定到它们所属的实例:您不必提供它。所以虽然你当然可以 将属性绑定到普通函数,它将没有特殊的自我参数:'

我无法理解作者在这里要传达的内容!我是python中的oop新手。请解释一下。

2 个答案:

答案 0 :(得分:0)

方法只存在于课堂上;将函数分配给实例属性,因为您的示例会创建一个包含函数的实例属性,而不是方法。

答案 1 :(得分:0)

这意味着

的影响
class A:
  def a(self):
    print 'a'
  def b(self, arg):
    print arg

可以粗略地表示为:

def A_a(self):
  print a

def A_b(self, arg):
  print arg

class A:
  def __init__(self):
    self.a = lambda: A_a(self)
    self.b = lambda arg: A_b(self, arg)

所以instance.a不是用a编写的原始函数class A,而是用另外的self参数调用原始函数的另一个函数。