Skip to content

如何区分调用的是函数还是方法 #94

@Sogrey

Description

@Sogrey
class MyClass:
    def process(self):
        pass

def process():
    pass

print(type(MyClass().process).__name__ == 'method')  ## True  判断是方法
print(type(process).__name__ == 'function')  ## True 判断是函数

from types import MethodType,FunctionType

print('MyClass.process:',isinstance(MyClass().process,FunctionType))  ## MyClass.process: False 
print('MyClass.process:',isinstance(MyClass().process,MethodType)) ## MyClass.process: True
print('process:',isinstance(MyClass().process,FunctionType)) ## process: False
print('process:',isinstance(MyClass().process,MethodType))  ## process: True
  • 通过类型type__name__ 判断是方法还是函数
  • 通过isinstance函数可以判断调用的是函数还是方法,如果是函数,类型是FunctionType,如果是方法,类型是MethodType。

Metadata

Metadata

Assignees

No one assigned

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions