在下面的代码中,类 A 有一个成员函数,它被设置为指向在类之外定义的函数。在类 B 中,相同的函数被设置到类定义中的外部指针。为 A 类型的对象调用函数将失败,因为 self 没有传递给函数。但是对于 B,自我通过了。为什么自我通过 B 而不是 A?
def f1(s,a):
print s
print a
class A(object):
def __init__(self):
self.fp1 = f1
class B(object):
fp1 = f1
a=A()
b=B()
try:a.fp1("blaa")
except Exception, e: print `e`
try:b.fp1("bluu")
except Exception, e: print `e`
输出:
TypeError('f1() takes exactly 2 arguments (1 given)',)
<__main__.B object at 0x2ab0dacabed0>
bluu