获取类方法引用到dict

问题描述 投票:0回答:1

为什么输出是:

<class 'method'>                                                                                                                    
<class 'method'>                                                                                                                        
<class 'function'>                                                                                                                      
<class 'function'>

<class 'method'>                                                                                                                         
<class 'method'>
<class 'method'>                                                                                                                                <class 'method'>

Code

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,我不知道变量是函数还是指向方法的函数)。

python
1个回答
0
投票

前两个是绑定方法,后两个是未绑定方法。最后,所有都是函数,唯一的区别是绑定方法接收关联的实例对象作为第一个参数(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

© www.soinside.com 2019 - 2024. All rights reserved.