Python 如何区分两个模块中同名但在一个文件中使用的两个方法
我在两个地方有一个名为“添加成员地址”的功能,但功能不同。Python 如何区分两个模块中同名但在一个文件中使用的两个方法,python,django,Python,Django,我在两个地方有一个名为“添加成员地址”的功能,但功能不同。 下面给出了在视图中定义的第一种方法 @login_required(login_url='/accounts/login/') def add_member_address(request, member_id): if request.method == "GET": pass else: data = request.POST add_member_address(da
下面给出了在视图中定义的第一种方法
@login_required(login_url='/accounts/login/')
def add_member_address(request, member_id):
if request.method == "GET":
pass
else:
data = request.POST
add_member_address(data, member_id) #<-this method is defined in another file.
其中租户是已在设置文件中注册的我的应用程序的名称。但是现在抛出了这个错误
name 'tenant' is not defined
文件夹结构:
project
->tenant
->services
-> __init__.py
-> address_services.py
-> here is this add_member_address(data, member_id) method
-> other_services.py
->views
->members.py
->here is this add_member_address(request, member_id) method
在service/\uuuuu init\uuuuu.py
文件中,所有服务都按如下方式导入
from .address_services import *
from .tag_services import *
请推荐我1.在同一个文件中使用时,如何区分两个同名但位于两个不同模块中的方法。
2.如何使用具有完整路径的方法,而不是在文件顶部导入。只需重命名一个,或者只导入模块,然后将函数作为该模块的属性进行查找 您可以在
import
语句中重命名导入的名称:
from .address_services import add_member_address as add_address
# use add_address(data, member_id)
改为使用模块名称:
from . import address_services
# use address_services.add_member_address(data, member_id)
如果您发现后者过于冗长,请记住您也可以重命名模块引用:
from . import address_services as as_
# use as_.add_member_address(data, member_id)
无论如何,导入所有内容都不是一个好做法
from .address_services import add_member_address as add_member_address_address_services
from .tag_services import add_member_address as add_member_address_tag_services
或者类似的东西。简单地说:不要使用模块导入中的
*
。我不认为来自。导入地址服务,如所示as
是一个关键字。小的打字错误-而不是as
应该是类似as
或as
的,正确,请更正
from .address_services import add_member_address as add_member_address_address_services
from .tag_services import add_member_address as add_member_address_tag_services