如何在主脚本和其他类之间共享类实例? 我只需要初始化一次类实例,并在任何地方使用它
我有这样一个错误:
NameError: name 'logger' is not defined
以下是我的项目结构:
project
|
|- classes
| |
| |-loggerClass.py
| |-workerClass.py
|
|-main.py
下面是我试图构建的简化代码:
日志类.py:
class loggerClass():
def __init__(self):
filename = os.path.join(PARAM['LOG_DIR'], datetime.datetime.today().strftime('%Y-%m-%d')+'.log')
self.logFile = open(filename, 'a')
def write(self, message):
line = datetime.datetime.today().strftime('%Y-%m-%d %H:%M')+"\t" + message
self.logFile.write(line)
def __del__(self):
print("============== CLOSE LOG FILE ===================")
self.logFile.close()
workerClass.py:
class workerClass():
def __init__(self):
global logger
logger.write("Worker initiated")
def doSomethingUseful():
pass
main.py:
from classes.workerClass import workerClass
from classes.loggerClass import loggerClass
logger = loggerClass()
worker = workerClass()
logger.write("END of the process") # I need to use the same "logger" instance everywhere
如果您只想使用
loggerClass
的一个实例,那么您甚至不需要导入loggerClass
—只导入实例因此,与其在模块
loggerClass
中只有loggerClass
,然后在main
中这样做:您应该将第
logger = loggerClass()
行放入loggerClass
模块中,然后在main
中执行此操作:或者,在模块中创建一个
get_logger()
函数,如果这种编码方式更适合您,它总是返回相同的logger实例。从功能上讲,也是一样的顺便说一句,代码中的命名约定很糟糕。帮你自己一个忙,读PEP-8,特别是:
loggerClass
-给它命名Logger
loggerClass
——如果没有更好的名字,就给它命名,例如logger
classes
,因为它只是个坏名字相关问题 更多 >
编程相关推荐