我有一個網絡應用程序,最初我用feedparser
從我的博客中提取數據。現在我想用Google API
來擴展各種其他功能。基於用戶輸入繼承課程
因爲我不想打破我的舊代碼,並要添加新的API作爲一個附加的插件式的東西,我想設置非常相似BeautifulSoup
這樣的結構:它提供了一個選擇,選擇HTML/ XML
解析器根據情況
BeautifulSoup(markup, "html.parser")
BeautifulSoup(markup, "lxml")
# They still support the same methods mentioned in the documentation.
這是我做過什麼:
from apis import api1, api2
from dev_user import my_api_choice
select = { "api1" : api1, "api2": api2 }
obj = pservice (select["my_api_choice"])
obj.method1()
# invokes method1 of the inherited class.
pservice
非常接近包裹補課。我最初認爲寫它是因爲我可以有機會在其中使用Google API。我甚至確保api2(提供Google API功能)提供了與api1相同的方法(即使它們的方法名稱相同)。
那麼,這是一個很好的方法嗎?要不然,我怎麼能做到這一點的其他方式..
「示例7.運行時的Metaclass配置」,位於本文第2頁[Python Metaclass編程入門](http://onlamp.com/pub/a/python/2003/04/17/metaclasses.html )顯示了用元類來做這件事。 – martineau 2012-08-06 20:41:10
如果我正確理解這個問題 - 基本上你只是遵循[適配器模式](https://en.wikipedia.org/wiki/Adapter_pattern)。特別適合你的API的多個版本到一個 – 2015-12-08 15:49:11