我有一个日志文件对象,我希望在我的其余代码中无处不在,以便它可以在整个代码中获取注释。我怎样才能将其编码成一个漂亮的OOP格式?
目前我已经在它使用的第一个类中实例化它,然后在它们被实例化时将它传递给其他所有类(我甚至还没有开始考虑尝试手我已经完成了使用课程后的退回。这显然看起来不必要地混乱!
class LogFile(object):
def __init__(self):
self.log = []
pass
def write_log(self, data):
self.log.append(data)
class A(object):
def __init__(self):
self.logger = LogFile()
self.do_some_stuff(stuff)
def do_some_stuff(self, stuff):
...
b = B(self.logger)
b.do_some_more_stuff(stuff)
self.logger.write_log(stuff)
class B(object):
def __init__(self, logger):
self.logger = logger
def do_some_more_stuff(self, stuff):
...
...
self.logger.write_log(more_stuff)
item = A()
item.do_some_stuff(stuff)
由于
答案 0 :(得分:0)
虽然我通常不喜欢使用Singletons,但对于像日志这样的事情来说,这是我所知道的最简单的解决方案。
在python中实现它的最简单方法是在模块TableLayout
中使用模块级变量:
mylogger.py
在另一个模块中:
class LogFile(object):
def __init__(self):
self.log = []
pass
def write_log(self, data):
self.log.append(data)
logger = LogFile()
Python的标准logging module使用from mylogger import logger
class A(object):
def do_some_stuff(self, stuff):
...
logger.write_log(data)
记录器defined as a module-level variable的类似方法。