关于反射的一点理解
之前看面向对象教程的时候提到反射这个功能比较强大,但是感觉一直用不上,这次开发AutoUploader的时候就遇到一个类似的场景:因为要实现多个rclone命令,所以每个任务功能给分开了,但是这样做会导致前端界面部分发送数据给后端时,还要去判断调用哪个任务类,如果使用if判断会很麻烦,而且如果后续再增加命令,会导致代码冗长,所以这次用到了反射,之前的教程中是在类外部实现反射,这次提供一个在类内部实现反射的功能:
Python
class Test:
def ls(self, cmd):
print('ls',cmd)
def mkdir(self, cmd):
print('mkdir',cmd)
def delete(self, cmd):
print('delete',cmd)
def custom_input(self):
while True:
user_cmd = input('>>>:').strip()
if hasattr(self, user_cmd):
func = getattr(self, user_cmd)
func( user_cmd)
t = Test()
t.custom_input()