kir*_*rti 22 python methods class event-handling python-watchdog
我是python的新手.我试图将值从一个方法传递到类中的另一个方法.我搜索了这个问题,但我找不到合适的解决方案.因为在我的代码中,"if"正在调用类的方法"on_any_event",反过来应该调用另一个方法"dropbox_fn",它使用"on_any_event"中的值.如果"dropbox_fn"方法在类之外,它会工作吗?
我将用代码说明.
class MyHandler(FileSystemEventHandler):
def on_any_event(self, event):
srcpath=event.src_path
print (srcpath, 'has been ',event.event_type)
print (datetime.datetime.now())
#print srcpath.split(' ', 12 );
filename=srcpath[12:]
return filename # I tried to call the method. showed error like not callable
def dropbox_fn(self)# Or will it work if this methos is outside the class ?
#this method uses "filename"
if __name__ == "__main__":
path = sys.argv[1] if len(sys.argv) > 1 else '.'
print ("entry")
event_handler = MyHandler()
observer = Observer()
observer.schedule(event_handler, path, recursive=True)
observer.start()
try:
while True:
time.sleep(1)
except KeyboardInterrupt:
observer.stop()
observer.join()
Run Code Online (Sandbox Code Playgroud)
这里的主要问题是..我不能在没有事件参数的情况下调用"on_any_event"方法.因此,不是返回值,而是在"on_any_event"中调用"dropbox_fn"将是更好的方法.有人可以帮忙吗?
fal*_*tru 47
要调用该方法,您需要使用限定函数self.
.除此之外,如果要传递文件名,请添加filename
参数(或您想要的其他名称).
class MyHandler(FileSystemEventHandler):
def on_any_event(self, event):
srcpath = event.src_path
print (srcpath, 'has been ',event.event_type)
print (datetime.datetime.now())
filename = srcpath[12:]
self.dropbox_fn(filename) # <----
def dropbox_fn(self, filename): # <-----
print('In dropbox_fn:', filename)
Run Code Online (Sandbox Code Playgroud)
若要将成员函数或变量从一个范围访问到另一个范围(在您的情况下,一个方法到另一个方法,我们需要使用类对象来引用方法或变量。您可以通过使用被称为类对象的self关键字来进行引用。
class YourClass():
def your_function(self, *args):
self.callable_function(param) # if you need to pass any parameter
def callable_function(self, *params):
print('Your param:', param)
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
74695 次 |
最近记录: |