覆盖python导入的帮助

覆盖python导入的帮助,python,Python,在应用程序1中,我有一个settings.py文件和一个utils.py,其中包含以下内容: from application_one import settings def someFunction(): // do some logic here based on imported settings def someFunction(settings=settings): … # Unmodified code ('settings' refers to the loc

在应用程序1中,我有一个settings.py文件和一个utils.py,其中包含以下内容:

from application_one import settings

def someFunction():
    // do some logic here based on imported settings
def someFunction(settings=settings):
    …  # Unmodified code ('settings' refers to the local 'settings' variable)
然后在第2号申请中,我会:

from application_one.utils import someFunction

在2号应用程序中,我有一个local settings.py,当我导入'someFunction()'时,我希望使用local settings.py,而不是1号应用程序中的文件。那么,如何在第2号应用程序中覆盖导入呢?

只需确保在加载了希望重载的功能后导入设置即可


不过,您最好还是完整加载名称空间,因为这样可以防止整个问题的发生。

只需确保在加载希望重载的函数后导入设置即可


不过,您最好还是完整加载名称空间,因为这样可以防止整个问题的发生。

您可以执行以下操作:

from application_one import settings

def someFunction():
    // do some logic here based on imported settings
def someFunction(settings=settings):
    …  # Unmodified code ('settings' refers to the local 'settings' variable)
(这允许
someFunction()
默认使用应用程序1设置),然后通过发送本地设置从应用程序2调用它:

someFunction(application2_settings)  # Explicit settings sent by Application 2

这种方法的一个优点是,应用程序1和应用程序2中的代码都明确显示
someFunction()
给出了依赖于设置的结果。

您可以执行以下操作:

from application_one import settings

def someFunction():
    // do some logic here based on imported settings
def someFunction(settings=settings):
    …  # Unmodified code ('settings' refers to the local 'settings' variable)
(这允许
someFunction()
默认使用应用程序1设置),然后通过发送本地设置从应用程序2调用它:

someFunction(application2_settings)  # Explicit settings sent by Application 2

这种方法的一个优点是,应用程序1和2中的代码都明确显示
someFunction()
给出的结果取决于设置。

如果希望它做其他事情,那么
someFunction
应该在
Application\u One
之外定义。如果它在
应用程序\u one
中,则它应该特定于应用程序1。(可能部分或全部
application\u one.util
应该从
application\u one
包中移出。)如果您想让它做其他事情,那么
someFunction
应该在
application\u one
之外定义。如果它在
应用程序\u one
中,则它应该特定于应用程序1。(可能部分或全部
application\u one.util
应该从
application\u one
包中移出。)这非常有用。谢谢。这很有帮助。非常感谢。