1.简单粗暴型:
def func():
...
class Foo:
def eat(self):
print("吃")
f = Foo()
print(func) #<function func at 0x0000021527DAC1E0>
print(Foo.eat) #<function Foo.eat at 0x000001AE7FF6B268>
print(f.eat) #<bound method Foo.eat of <__main__.Foo object at 0x0000025711BD5EF0>>
# 通过类名调用的就是函数,通过类实例化的对象调用就是方法
2.导入模块判断:
from types import FunctionType,MethodType
def func():
...
class Foo:
def eat(self):
print("吃")
f = Foo() print(isinstance(func,FunctionType)) # True
print(isinstance(f.eat,MethodType)) # True
print(isinstance(Foo.eat,FunctionType)) # True
print(isinstance(Foo.eat,MethodType)) # False