什么是函数,什么是方法?

判断是函数还是方法,在于它的调用者是谁,如果它的调用者是类,它就是函数,调用者是对象,它就是方法

from types import MethodType,FunctionType

class Foo(object):
    def fetch(self):
        pass

Foo.fetch('sdf')    #类名调用类中的函数时,这个函数是被当做函数被执行的
obj=Foo()
obj.fetch()     #对象调用类中的函数时,这个函数是被当做方法被执行的

print(isinstance(Foo.fetch,MethodType))     #False
print(isinstance(Foo.fetch,FunctionType))   #True

print(isinstance(obj.fetch,MethodType))     #True
print(isinstance(obj.fetch,FunctionType))       #False

 

posted @ 2018-05-25 17:01  dwenwen  阅读(1967)  评论(0)    收藏  举报