区分函数与方法
程序员文章站
2022-05-18 22:45:52
一、通过print打印区分 函数在打印的时候,显示的是function 方法在打印的时候,显示的是method 二、通过types模块MethodType,FunctionType判断 1. 实例方法 通过对象.方法名,得到的是方法类型 通过类名.方法名,得到的是函数类型 2. 静态方法 通过对象. ......
一、通过print打印区分
- 函数在打印的时候,显示的是function
- 方法在打印的时候,显示的是method
def func(): pass class animal(object): def run(self): pass print(func) # <function func at 0x0000022343cd1f28> c = animal() print(c.run) # <bound method animal.run of <__main__.animal object at 0x0000022344128400>>
二、通过types模块methodtype,functiontype判断
1. 实例方法
- 通过对象.方法名,得到的是方法类型
- 通过类名.方法名,得到的是函数类型
from types import functiontype, methodtype class foo(object): def run(self): pass fn = foo() print(isinstance(fn.run, methodtype)) # true print(isinstance(foo.run, functiontype)) # true
2. 静态方法
- 通过对象.方法名,得到的是函数类型
- 通过类名.方法名,得到的是函数类型
from types import functiontype, methodtype class foo(object): @staticmethod def run(): pass fn = foo() print(isinstance(fn.run, functiontype)) # true print(isinstance(foo.run, functiontype)) # true
3. 类方法
- 通过对象.方法名,得到的是方法类型
- 通过类名.方法名,得到的是方法类型
from types import functiontype, methodtype class foo(object): @classmethod def run(cls): pass fn = foo() print(isinstance(fn.run, methodtype)) # true print(isinstance(foo.run, methodtype)) # true
下一篇: 接口技术的实现:规范用户类的成员与类型