Python: 変数がインスタンスメソッドであることを確認しますか? 質問する

Python: 変数がインスタンスメソッドであることを確認しますか? 質問する

変数がインスタンス メソッドであるかどうかをどのように確認すればよいでしょうか? 私は Python 2.5 を使用しています。

このようなもの:

class Test:
    def method(self):
        pass

assert is_instance_method(Test().method)

ベストアンサー1

inspect.ismethod単に呼び出せるものではなく、確実にメソッドがあるかどうかを確認したいものです。

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引数がメソッド、関数 ( lambdas を含む)、インスタンス、__call__またはクラスである場合は true になります。

im_classメソッドは関数(やなど)とは異なる特性を持っていますim_self。そのため、

assert inspect.ismethod(Test().method)  

おすすめ記事