基于用户输入继承类

时间:2012-08-06 18:57:13

标签: python

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

那么,这是一个很好的方法吗?或者,我怎么能以其他方式做到这一点..

1 个答案:

答案 0 :(得分:2)

您可以使用abstract classAPIabstract之类的fetch方法创建pull inherit,并在类下构建具体实现比如API1 / API2 / etc ...

例如,fetch的{​​{1}}函数的实现将针对HTML执行,而fetch的{​​{1}}函数的实现方式将使用feedparser实现。 ..

现在根据您的要求或当前配置或任何输入;做出XML您想要使用的决定并为此创建API,因为方法名称在所有类中都是相同的,您需要为该{{1}激发适当的dynamic instance你已经完成了。

此外,您可以介绍function并更新您的配置 - 将API3类实例用作另一个instance提供程序。