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 回答