我正在使用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()
的方法,我想动态地知道它确实存在与否。
答案 0 :(得分: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!'
答案 1 :(得分:1)
您可以使用dir,
>>> import time
>>> if '__name__' in dir(time):
... print 'Method found'
...
Method found