我們的框架需要一些醜陋的樣板代碼包裝某些功能:動態地添加功能,以一個Python模塊
def prefix_myname_suffix(obj):
def actual():
print 'hello world'
obj.register(actual)
return obj
我想這可能與一裝飾被簡化:
@register
def myname():
print 'hello world'
然而,轉身這相當棘手,主要是因爲框架在模塊層次上尋找某種模式的函數名稱。
我已經試過裝飾中的以下,但無濟於事:
current_module = __import__(__name__)
new_name = prefix + func.__name__ + suffix
# method A
current_module[new_name] = func
# method B
func.__name__ = new_name
current_module += func
任何幫助,將不勝感激!
你需要更詳細地解釋一下這些名字框架「看起來」的內容。你可能會重寫__getattr__或者調用你自己的模塊自己的字典來僞裝它,但是在這一點上確實無法說明。 – 2009-10-25 16:55:13
我真的不知道框架究竟做了什麼。奧倫的小提醒是我所需要的。 – AnC 2009-10-25 17:03:16