• 反射:通过字符串操作属性


    ##反射:
    # 通过字符串来操作对象的属性或方法
    ##举例
    class User:
    school = 'oldgirl'
    def __init__(self,name,age):
    self.name = name
    self.age = age
    def func(self):
    print('func')

    # 1.hasattr判断对象是否有某个属性或方法

    print(User.school)
    print('school' in User.__dict__)
    print('xxx' in User.__dict__)
    print(hasattr(User,'school'))
    print(hasattr(User,'xxx'))
    print(hasattr(User,'func'))
    print('func' in User.__dict__)

    print('==========================================')
    ##2,如果对象有某个属性,获取某个属性的值
    # getattr

    d = {'name':"jason"}
    print(d.get('password','hahahahahaha'))
    #
    # getattr
    print(getattr(User,'school'))
    print(getattr(User,'func'))
    print(User.__dict__['school'])
    print(User.__dict__['func'])

    # print(getattr(User,'xxx')) 需要注意的是:如果没有这个属性,用get 就会报错,所以要先判断一下
    if hasattr(User,'xxx'):
    getattr(User,'xxx')

    print('==========================================')
    ##现在要修改设置一个对象中的属性
    # setattr
    obj = User('jason',18)
    setattr(obj,'gender','male') # obj.gender = 'male'
    print(obj.__dict__)


    print('==========================================')
    ##现在要删除一个对象中的属性
    # delattr
    delattr(User,'school')
    print(User.__dict__)








  • 相关阅读:
    算法演示工具
    1198:逆波兰表达式
    1315:【例4.5】集合的划分
    1192:放苹果
    1191:流感传染
    1354括弧匹配检验
    1331【例1-2】后缀表达式的值
    1307高精度乘法
    1162字符串逆序
    1161转进制
  • 原文地址:https://www.cnblogs.com/1832921tongjieducn/p/10957993.html
Copyright © 2020-2023  润新知