Day33.反射案例
1.反射案例_getattr案例和setattr案例
obj = 10 if hasattr(obj, 'x'): print(getattr(obj, 'x')) else: pass # todo getattr指定默认参数,如果从10中获取不到'x'属性,则输出默认值None print("getattr指定默认参数,如果从10中获取不到'x'属性,则输出默认值None".center(60, '-')) print(getattr(obj, 'x', None)) # todo 判断如果obj有x这个对象,在执行setattr对象赋值操作 print('判断如果obj有x这个对象,在执行setattr对象赋值操作'.center(60, '-')) if hasattr(obj, 'x'): setattr(obj, 'x', 111111) # 10.x=11111 else: print('obj中没有x属性')
2.反射案例_getattr案例和setattr案例文件上传下载案例
class Ftp: def put(self): print('正在执行上传功能') def get(self): print('正在执行下载功能') def interactive(self): method = input('>>>:').strip() # method = 'put' or method = 'get' # todo hasattr()判断Ftp类下面是否有输入的method名称 if hasattr(self, method): # todo 判断如果有method名称,则用getattr()进行调用,类.方法 getattr(self, method)() else: print('输入的指令不存在') obj = Ftp() obj.interactive()