如何设计/编写“interfacetowardsotherAPIs”API?

2024-09-30 22:21:24 发布

您现在位置:Python中文网/ 问答频道 /正文

我目前有两个类似的API,但它们在实现上也有很大的不同(假设它们是特定于项目的),为了便于解释,我将它们称为API_utilities_project1.pyAPI_utilities_project2.py

这些API是更大框架的一部分,该框架还“承载”将要使用这些API的脚本。根据框架中定义的“项目”,脚本将使用其中一个API此外,脚本可以是特定于项目的,也可以是通用的/可在所有项目上重用的(这意味着某些脚本不会在某些“项目”上使用/允许)

我想在API_utilities_project1.pyAPI_utilities_project2.py周围创建一个名为API_utilities.py的“包装器”API。通过这种方式,脚本可以导入API_utilities.py,而不管项目是什么(不需要在脚本中签入框架中定义的项目以及基于该导入的第一个或第二个API)>;导入逻辑将在API_utilities.py中处理

问题在于API_utilities_project1.pyAPI_utilities_project2.py不需要实现调用相同的函数。所以我不能仅仅在“API_utilities.py”中为这些函数创建接口。到目前为止,我提出的唯一可行的方法是:

API\u实用程序\u项目1.py

def foo():
    print 'foo'

API\u实用程序\u项目2.py

def bar():
    print 'bar'

API_utilities.py

if fwk.project=='project1':
    from API_utilities_project1 import *
elif fwk.project=='project2':
    from API_utilities_project2 import *
else:
    print 'error message / exception or whatnot'


def same():
        print 'same functionality'

script1.py(“项目1”在框架中定义)

import API_utilities as API

API.foo()
API.same()

script2.py(“项目2”在框架中定义)

import API_utilities as API

API.bar()
API.same()

有没有比使用from ... import *更干净的方法来写API_utilities.py


Tags: 项目pyimport脚本框架api定义foo