2017-10-27 3 views
0

ich Watchdog verwende informiert werden, wenn eine bestimmte Datei geändert wird,Python Watchdog aufrufen Klassenmethode, wenn ein Ereignis passiert

evertything so lange gearbeitet, wie ich keine Klassen verwende wie so

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 

aber wenn ich habe ein paar Klassen anstelle ich weiß nicht, wie die Methode aufzurufen dann wie dieses Setup ist jetzt

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 

Antwort

0

es gibt ein Protokoll der Möglichkeiten, es zu tun; hier ist eine:

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) 
+0

danken, ich fand tatsächlich einen Weg, es zu tun, ich die Eventhandler initialisiert nicht durch eine Klasse, sondern in der Klasse mit sich so die Methode innerhalb der Klasse nennen, ich könnte, aber Ihre Art und Weise auch gearbeitet, wie du gesagt hast, viele Möglichkeiten ... – Markus

Verwandte Themen