首页 > 其他 > 详细

二反射

时间:2018-09-03 22:14:57      阅读:163      评论:0      收藏:0      [点我收藏+]
# 反射:通过字符串来操作对象属性,类也是一样。
class Foo:
    def __init__(self, name):
        self.name = name

    def eat(self):
        print(‘%s is eating‘ % self.name)


obj = Foo(‘egon‘)

print(hasattr(obj, ‘eat‘))  # 判断对象是否有eat属性,有返回True

print(getattr(obj, ‘age‘, None))  # 获取对象是否有age属性,没有返回设置的默认值None

setattr(obj, ‘age‘, 18)  # 当age不存在时候就是创建、存在就是需改
print(obj.__dict__)  # {‘age‘: 18, ‘name‘: ‘egon‘}
setattr(obj, ‘age‘, 180)
print(obj.__dict__)  # {‘age‘: 180, ‘name‘: ‘egon‘}

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

  

二反射

原文:https://www.cnblogs.com/yspass/p/9581326.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!