我正在用python编写一些代码,试图创建一个简单的面向套接字对象的服务器-客户端连接。我想保持我的代码干净,因此我更愿意排除过多的";如果";陈述因此,我对服务器套接字的类定义如下:
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,我可以建议你谈谈(关于decorator的一部分(:James Powell:那么你想成为Python专家吗?|PyData西雅图2017