我有一个网络应用程序,最初我使用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相同的方法(即使它们的方法名称相同)。
那么,这是一个很好的方法吗?或者,我怎么能以其他方式做到这一点..
答案 0 :(得分:2)
您可以使用abstract class
或API
和abstract
之类的fetch
方法创建pull
inherit
,并在类下构建具体实现比如API1
/ API2
/ etc ...
例如,fetch
的{{1}}函数的实现将针对HTML
执行,而fetch
的{{1}}函数的实现方式将使用feedparser
实现。 ..
现在根据您的要求或当前配置或任何输入;做出XML
您想要使用的决定并为此创建API
,因为方法名称在所有类中都是相同的,您需要为该{{1}激发适当的dynamic instance
你已经完成了。
此外,您可以介绍function
并更新您的配置 - 将API3类实例用作另一个instance
提供程序。