我希望能夠從導入類調用全局函數,例如Python如何製作跨模塊功能?
在文件PetStore.py
class AnimalSound(object):
def __init__(self):
if 'makenoise' in globals():
self.makenoise = globals()['makenoise']
else:
self.makenoise = lambda: 'meow'
def __str__(self):
return self.makenoise()
然後當我在Python解釋器
>>> def makenoise():
... return 'bark'
...
>>> from PetStore import AnimalSound
>>> sound = AnimalSound()
>>> sound.makenoise()
'meow'
測試我得到'喵'而不是'樹皮'。我嘗試過使用python-how-to-make-a-cross-module-variable中提供的解決方案,但沒有運氣。
謝謝!我對誰給出接受的答案有點衝突,但我想我會接受你的建議並明確地通過該函數。 – Evan 2010-05-25 03:55:00
@Evan,當然 - 我不喜歡@伊格納西奧建議通過隱蔽渠道進行溝通,但是我認爲它看起來更簡單(直到最初幾次你發現自己在浪費數小時或數天的時間來調試這種「簡單外觀」解決方案的災難性後果,這可能需要幾年或幾十年的經驗)。當然,如果你接受錯誤的解決方案,但是實施正確的解決方案,你將永遠不會得到真正理解爲什麼正確的解決方案是正確的;-)所需的痛苦體驗。 – 2010-05-25 03:59:11