>>> 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新手。请解释一下。
答案 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
参数调用原始函数的另一个函数。