码迷,mamicode.com
首页 > 编程语言 > 详细

Python全栈之路----面向对象开发----反射

时间:2019-05-25 13:01:23      阅读:106      评论:0      收藏:0      [点我收藏+]

标签:split   反射   cmd   color   strip   面向   命令   默认   下载   

 

反射:通过字符串映射到对象的属性

class People:
    country = China
    def __init__(self, name, age):
        self.name = name
        self.age = age

    def talk(self):
        print(%s is talking %self.name)

obj = People(egon, 18)

print(obj.name)  # obj.__dict__[‘name‘]
print(obj.talk)

choice = input(>>:)  # choice = ‘name‘
print(obj.choice)  # print(obj.‘name‘)

hasattr(obj, name)  # 查找 obj.name 或 obj.__dict__[‘name‘] 是否存在,返回True or False
print(getattr(obj, name, None))  # 有的话返回方法或数据值 ,可设置默认值为None,在没有的情况下返回默认值None,不设置默认值会报错
setattr(obj, sex, male)  # 修改 obj.sex = ‘male‘
delattr(obj, age)   # 删除 obj.age

反射的应用:通过输入,直接调用相应命令

class Service:
    def run(self):  # 运行功能
        while True:
            inp = input(>>:).strip()  # inp = ‘get a.txt‘
            cmds = inp.split()  # cmds = [‘get‘,‘a.txt‘]

            if hasattr(self, cmds[0]):
                func = getattr(self, cmds[0])
                func(cmds)

    def get(self, cmds):  # 下载功能
        print(get..., cmds)

    def put(self, cmds):  # 上传
        print(put..., cmds)

obj = Service()
obj.run()

 

Python全栈之路----面向对象开发----反射

标签:split   反射   cmd   color   strip   面向   命令   默认   下载   

原文地址:https://www.cnblogs.com/Moxiaoyu666/p/10921959.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!