0

我有一个网络应用程序,最初我曾经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 相同的方法(即使它们的方法名称相同)。

那么,这是一个好方法吗?否则,我怎么可能以其他方式做到这一点..

4

1 回答 1

2

您可以使用诸如or之类的方法创建一个abstract class API,并在/ / 等类下构建具体实现......abstractfetchpullinheritAPI1API2

例如fetch,Google APIHTMLfetch功能实现feedparser将使用XML...

现在根据您的要求或当前配置或任何输入;做出一个API你想要使用和创建的决定dynamic instance,现在因为方法名称在所有类中都是相同的,你只需要为此触发适当function的,instance你就完成了。

此外,之后您可以引入API3和更新您的配置 - 使用 API3 类实例作为另一个content提供者。

于 2012-08-06T19:14:03.783 回答