Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/314.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用decorator[Python]调试代码_Python_Python 3.x_Sockets_Decorator_Python Decorators - Fatal编程技术网

使用decorator[Python]调试代码

使用decorator[Python]调试代码,python,python-3.x,sockets,decorator,python-decorators,Python,Python 3.x,Sockets,Decorator,Python Decorators,我正在用python编写一些代码,试图创建一个简单的面向对象的套接字服务器客户端连接。我希望保持我的代码干净,因此我希望排除过多的“if”语句。因此,我的服务器套接字类定义如下所示: class Server(object): def __init__(server_ip=LOCALHOST, server_port=55555, debug=True): # other code pass 因此,如果有一段话,当进行某种调试看起来很有用时,我已经包

我正在用python编写一些代码,试图创建一个简单的面向对象的套接字服务器客户端连接。我希望保持我的代码干净,因此我希望排除过多的“if”语句。因此,我的服务器套接字类定义如下所示:

class Server(object):

    def __init__(server_ip=LOCALHOST, server_port=55555, debug=True):

        # other code
        pass
因此,如果有一段话,当进行某种调试看起来很有用时,我已经包含了一个if语句,如下所示:

if debug:
    print("Something that helps the code debugging")
因此,我想知道是否有一种方法可以从主类中排除这种类型的代码块,并将它们添加到定义装饰器的包装器函数中。可能吗?如果是这样,我如何实现这个功能


非常感谢您抽出时间,同时,请原谅我的英语,我还在练习呢

由您决定,但实际上,对于日志逻辑,使用内置日志模块非常方便,该模块具有清晰的设置模式:

import logging

logger = logging.getLogger(__name__)
log_handler = logging.streamHandler() # to output logs into stderr by default
logger.addHandler(log_handler)

logger.setLevel(logging.DEBUG) # here you set log level, you need to parametrize it (or dive deeper into logging docs)

def your_foo():
  logger.debug('Debug log message') # will only fire if log level == DEBUG

如果您仍然想坚持使用decorator,我可以建议您进行以下讨论(关于decorators的部分):

这取决于您,但实际上对于日志逻辑,使用内置日志模块非常方便,它有一个清晰的设置模式:

import logging

logger = logging.getLogger(__name__)
log_handler = logging.streamHandler() # to output logs into stderr by default
logger.addHandler(log_handler)

logger.setLevel(logging.DEBUG) # here you set log level, you need to parametrize it (or dive deeper into logging docs)

def your_foo():
  logger.debug('Debug log message') # will only fire if log level == DEBUG

如果你仍然想坚持使用decorator,我可以建议你做这个演讲(decorators部分):

有关如何实现日志装饰的信息,请参见创建日志记录模块的目的:我几乎不再使用打印语句。有关如何实现日志装饰的信息,请参见创建日志记录模块的目的:我几乎不再使用打印语句。非常感谢您抽出时间,我真的很感激你的帮助,当然,我会考虑并尝试使用你的建议。如果我可以请你进一步帮助,我已经在这个链接上发布了另一个问题:。如果你能看一下并回答,我将非常感激。无论如何,非常感谢你的帮助!非常感谢你抽出时间,尤里,我真的很感谢你的帮助,当然,我会看看你的建议并尝试使用。如果我可以请你进一步帮助,我已经在这个链接上发布了另一个问题:。如果你能看一下并回答,我将非常感激。无论如何,非常感谢你的帮助!