Python : Assert that variable is instance method?

后端 未结 2 1096
爱一瞬间的悲伤
爱一瞬间的悲伤 2020-12-03 13:14

How can one check if a variable is an instance method or not? I\'m using python 2.5.

Something like this:

class Test:
    def method(self):
        p         


        
2条回答
  •  借酒劲吻你
    2020-12-03 14:06

    inspect.ismethod is what you want to find out if you definitely have a method, rather than just something you can call.

    import inspect
    
    def foo(): pass
    
    class Test(object):
        def method(self): pass
    
    print inspect.ismethod(foo) # False
    print inspect.ismethod(Test) # False
    print inspect.ismethod(Test.method) # True
    print inspect.ismethod(Test().method) # True
    
    print callable(foo) # True
    print callable(Test) # True
    print callable(Test.method) # True
    print callable(Test().method) # True
    

    callable is true if the argument if the argument is a method, a function (including lambdas), an instance with __call__ or a class.

    Methods have different properties than functions (like im_class and im_self). So you want

    assert inspect.ismethod(Test().method)  
    

提交回复
热议问题