1
>>> 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...

好吧,书中引用'self参数(在上一节中提到)实际上是区分方法和函数的地方。方法(或者,从技术上讲,绑定方法)将它们的第一个参数绑定到它们所属的实例:您不必提供它。因此,虽然您当然可以将属性绑定到普通函数,但它不会有那个特殊的 self 参数:'

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

4

2 回答 2

0

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

于 2013-08-22T02:29:57.000 回答
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参数调用原始函数的函数。

于 2013-08-22T02:30:20.243 回答