12、反射

 

# 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()

 

posted @ 2018-11-30 23:55  Operater  阅读(120)  评论(0编辑  收藏  举报