0

私はpythonで作業しています。同じモジュール内にメソッドが存在するかどうかを知りたいです。私getattr()はこれを行うと思いますが、私はできませんでした。これは、私が本当にやりたいことを示すサンプルコードです。

#python module is my_module.py
def my_func():
    # I want to check the existence of exists_method
    if getattr(my_module, exists_method):
       print "yes method "
       return
    print "No method"
def exists_method():
    pass

私の主な仕事は、定義されたメソッドを動的に呼び出すことです。定義されていない場合は、そのメソッドの操作をスキップして続行します。キーに基づいて、対応する値を操作するために必要ないくつかのメソッドを定義するデータの辞書があります。例えばデータは {"name":"my_name","address":"my_address","...":"..."}name()ここで、実際に存在するかどうかを動的に知りたいというメソッドを定義します。

4

2 に答える 2

3

名前を文字列として探す必要があります。hasattr()ここでその名前をテストするために使用します。

if hasattr(my_module, 'exists_method'):
    print 'Method found!"

これは存在する場合は機能しますが、このコードを 内でmy_module.exists_method実行すると機能しません。 my_module

が現在のexists_methodモジュールに含まれている場合は、それをテストするために使用する必要があります。globals()

if 'exists_method' in globals():
    print 'Method found!'
于 2013-04-04T11:31:38.700 に答える
1

使用できますdir

>>> import time
>>> if '__name__' in dir(time):
...     print 'Method found'
... 
Method found
于 2013-04-04T11:37:47.817 に答える