2013-04-04 21 views
0

我正在使用python。我想知道是否有任何方法存在或不在同一個模塊中。我認爲getattr()這樣做,但我做不到。這裏是示例代碼,說明我真的想做什麼。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()的方法,我想動態地知道它的存在與否。

回答

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!' 
+0

@Martujin皮特斯:謝謝你的回覆。這工作得很好!謝謝 – ln2khanal 2013-04-04 11:47:53

1

您可以使用dir

>>> import time 
>>> if '__name__' in dir(time): 
...  print 'Method found' 
... 
Method found 
+0

如果你仔細查看我的帖子,你一定會發現你的答案不是我的解決方案。我已經可以用你的風格做其他事情。無論如何感謝您的回覆。 – ln2khanal 2013-04-04 11:51:40

+0

@ma_mama不客氣 – 2013-04-04 12:29:24