# class Foo: # pass # # class Bar(Foo): # pass # # # obj=Bar() # # # print(isinstance(obj,Bar)) # # print(isinstance([],list)) # # print(issubclass(Bar,Foo)) # 反射:指的是通过字符串来操作属性 class Foo: def __init__(self,name): self.name=name obj=Foo('egon') # hasattr() # print(hasattr(obj,'name')) #'name' in obj.__dict__ # getattr() # print(getattr(obj,'name')) #obj.__dict__['name'] # print(getattr(obj,'age')) #obj.__dict__['age'] # print(getattr(obj,'age',None)) #obj.__dict__['age'] # setattr() # setattr(obj,'age',18) #obj.age=18 # setattr(obj,'name','EGON') #obj.name='EGON' # print(obj.__dict__) # delattr() # delattr(obj,'name')# del obj.name # print(obj.__dict__) class Ftp: def get(self): print('get') def put(self): print('put') def login(self): print('login') def run(self): while True: choice=input('>>>: ').strip() if hasattr(self,choice): method=getattr(self,choice) method() else: print('命令不存在') obj=Ftp() obj.run()