Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/360.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
Python 从类中调用函数_Python_Python 3.x_Logging - Fatal编程技术网

Python 从类中调用函数

Python 从类中调用函数,python,python-3.x,logging,Python,Python 3.x,Logging,如果我的主文件中有一个简单的日志功能: def log_events(data_to_log): log_this = '%s - %s' % (strftime("%Y-%m-%d %H:%M:%S"), data_to_log) print ('%s\r' % log_this[0:140]) hlog_file = open('%s' % LOG_FILE_NAME, 'a') print ( log_this, file=hlog_file) hl

如果我的主文件中有一个简单的日志功能:

def log_events(data_to_log):
    log_this = '%s - %s' % (strftime("%Y-%m-%d %H:%M:%S"), data_to_log)
    print ('%s\r' % log_this[0:140])
    hlog_file = open('%s' % LOG_FILE_NAME, 'a')
    print ( log_this, file=hlog_file)
    hlog_file.close()
我有不同的课程来完成不同的任务。我想在我创建的每个类中重用相同的日志函数。这在一个名为的文件中。doit.py

class DoStuff:

    def __init__ (self, extra_stuff_):
        self.some_extra_stuff = extra_stuff

    def do_the_thing(self):
        x = 1
        log_events( ' x is currently %s' % x )
        x = 2
        log_events( ' x is currently %s' % x )
        log_events( ' extra stuff is %s' % self.some_extra_stuff )
现在是最后的代码:

import doit

def log_events(data_to_log):
    log_this = '%s - %s' % (strftime("%Y-%m-%d %H:%M:%S"), data_to_log)
    print ('%s\r' % log_this[0:140])
    hlog_file = open('%s' % LOG_FILE_NAME, 'a')
    print ( log_this, file=hlog_file)
    hlog_file.close()

things_i_want_to_do = doit.DoStuff('this is the stuff')
things_i_want_to_do.do_the_thing()
我得到:

NameError: name 'log_events' is not defined

是否有更好的方法与所有导入的类共享日志事件功能?

您希望能够使用日志记录器的任何文件都应导入日志记录器它不是自己的类,而是主文件的一部分。“是否有更好的方法共享日志事件功能”您根本没有共享它。这样做。如果您需要与许多其他文件共享日志,则应将日志程序移动到它自己的文件中。您必须在每个python文件中导入此记录器,以便能够访问记录器。明白了。我想既然它是主脚本的一部分,我就不必每次都将它分离成一个文件并导入。