面向对象中判断什么是函数,什么是方法

class A:
    def func(self):
        pass
print(A.func)  #类调用动态属性是函数
a = A()
print(a.func)   #对象调用动态属性是方法

from types import MethodType, FunctionType       
print(isinstance(a.func,MethodType)) print(isinstance(A.func,MethodType)) print(isinstance(a.func,FunctionType)) print(isinstance(A.func,FunctionType))

执行结果:

<function A.func at 0x0000018A0C9FB8C8>
<bound method A.func of <__main__.A object at 0x0000018A0C9F9358>>
True
False
False
True

通过以上结果总结:

#类调用动态属性是函数
#对象调用动态属性是方法
posted @ 2019-02-06 14:02  小萍瓶盖儿  阅读(325)  评论(0编辑  收藏  举报