python 看门狗在事件发生时调用 class 方法
python watchdog invoke class method when event happend
我正在使用看门狗在某个文件被更改时得到通知,
只要我不使用 类 就可以正常工作
class MyEventHandler(PatternMatchingEventHandler):
def on_modified(self, event):
super(MyEventHandler, self).on_modified(event)
logging.info("File %s was just modified" % event.src_path)
readConfigFile()
def readConfigFile():
# set certain values here
def main():
while True:
# using values from configFile here
if __name__ == '__main__':
main()
# do something else
但是如果我把一些 类 放在适当的位置,我不知道如何调用该方法,那么现在的设置就像这样
class MyEventHandler(PatternMatchingEventHandler):
def on_modified(self, event):
super(MyEventHandler, self).on_modified(event)
logging.info("File %s was just modified" % event.src_path)
readConfigFile() #<- i want to call this method in class Configuration
class Configuration:
def readConfigFile(self):
# set certain values here
def provideValues(self):
# get certain values here
class MainClass:
def __init__(self):
self.conf = Configuration()
event_handler = MyEventHandler(patterns=patterns)
def main(self):
while True:
# using values from configFile here
bla = self.conf.provideValues()
if __name__ == '__main__':
mc = MainClass()
mc.main()
# do something else
有很多方法可以做到;这是一个:
class MyEventHandler(PatternMatchingEventHandler):
def hook(self, thing):
self.thing = thing
def on_modified(self, event):
super(MyEventHandler, self).on_modified(event)
logging.info("File %s was just modified" % event.src_path)
self.thing.readConfigFile() #<- i want to call this method in class Configuration
class MainClass:
def __init__(self):
self.conf = Configuration()
event_handler = MyEventHandler(patterns=patterns)
event_handler.hook(self.conf)
我正在使用看门狗在某个文件被更改时得到通知,
只要我不使用 类 就可以正常工作
class MyEventHandler(PatternMatchingEventHandler):
def on_modified(self, event):
super(MyEventHandler, self).on_modified(event)
logging.info("File %s was just modified" % event.src_path)
readConfigFile()
def readConfigFile():
# set certain values here
def main():
while True:
# using values from configFile here
if __name__ == '__main__':
main()
# do something else
但是如果我把一些 类 放在适当的位置,我不知道如何调用该方法,那么现在的设置就像这样
class MyEventHandler(PatternMatchingEventHandler):
def on_modified(self, event):
super(MyEventHandler, self).on_modified(event)
logging.info("File %s was just modified" % event.src_path)
readConfigFile() #<- i want to call this method in class Configuration
class Configuration:
def readConfigFile(self):
# set certain values here
def provideValues(self):
# get certain values here
class MainClass:
def __init__(self):
self.conf = Configuration()
event_handler = MyEventHandler(patterns=patterns)
def main(self):
while True:
# using values from configFile here
bla = self.conf.provideValues()
if __name__ == '__main__':
mc = MainClass()
mc.main()
# do something else
有很多方法可以做到;这是一个:
class MyEventHandler(PatternMatchingEventHandler):
def hook(self, thing):
self.thing = thing
def on_modified(self, event):
super(MyEventHandler, self).on_modified(event)
logging.info("File %s was just modified" % event.src_path)
self.thing.readConfigFile() #<- i want to call this method in class Configuration
class MainClass:
def __init__(self):
self.conf = Configuration()
event_handler = MyEventHandler(patterns=patterns)
event_handler.hook(self.conf)