python类中如何判断是函数还是方法

通常我们认为在类中的函数为方法,类外面声明def为函数,这种说法有点片面

方法1:

class Work(object):
    def show(self):
        print("执行show方法")

work = Work()
print(Work.show)
print(work.show)

结果:
<function Work.show at 0x000001CC55BC5268>
<bound method Work.show of <__main__.Work object at 0x000001CC55C2F240>>

可以看出通过类方法调用为函数,通过实例化对象调用为方法

方法2:

'''
遇到问题没人解答?小编创建了一个Python学习交流QQ群:778463939
寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
'''
from types import MethodType,FunctionType
print(isinstance(Work.show,FunctionType))
print(isinstance(Work.show,MethodType))
print(isinstance(work.show,FunctionType))
print(isinstance(work.show,MethodType))

结果:
True
False
False
True

可以用内置的isinstance 来判断

posted @ 2022-10-07 20:29  I'm_江河湖海  阅读(204)  评论(0编辑  收藏  举报