处理导入错误的Pythonic方法

2024-04-20 12:56:37 发布

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

我正在我的项目中使用一个自定义日志模块。如果它不可用,我想用一个dummy代替它,而不是提出一个ImportError。你知道吗

以下是当前执行此操作的代码:

try:
    import logger
except ImportError:
    print 'Couldn\'t load logger'

    class DummyLogger(object):
        def __init__(self):
            pass
        def log(self, image):
            pass

    logger = DummyLogger()

我不认为这是一个优雅的解决方案。当然可以,但不太好。有更好的办法吗?你知道吗


Tags: 模块项目代码importselfdefpasslogger
2条回答

我将把虚拟实现放到一个单独的模块中,称为dummy_loggger,并编写:

try:
    import logger
except ImportError:
    import dummy_logger as logger

我以前用JSON解析器做过:

try:
    import ujson as json  # very fast but might not be available in some cases
except ImportError:
    import json

您可以很容易地使其更加简洁:

try:
    import logger
except ImportError:
    print 'Couldn\'t load logger'

    class logger(object):
        @classmethod
        def log(cls, image):
            pass

请注意,即使在当前版本中,也应该删除空的__init__,因为它不会增加任何值。你知道吗

相关问题 更多 >