为什么输出是:
<class 'method'>
<class 'method'>
<class 'function'>
<class 'function'>
不
<class 'method'>
<class 'method'>
<class 'method'> <class 'method'>
class A:
def ftest(self, a, *args):
b = args[0]
self.r = a+b
f_ref = ftest
f_dict = {
'ftest': ftest,
'f_ref': f_ref
}
inst = A()
print(type(inst.ftest))
print(type(inst.f_ref))
print(type(inst.f_dict['ftest']))
print(type(inst.f_dict['f_ref']))
我做了一个函数路由cmd args并输入'function'而不是'method'导致异常(我不是通过self,我不知道变量是函数还是指向方法的函数)。
前两个是绑定方法,后两个是未绑定方法。最后,所有都是函数,唯一的区别是绑定方法接收关联的实例对象作为第一个参数(self):
class A:
def __init__(self, p):
self.p = p
def print_p(self):
print(self.p)
a = A(10)
a.print_p() # This is equivalent
A.print_p(a) # to this
有关更多信息,请参阅this