python 面向对象 反射

  1. 什么是反射
    通过字符串的形式操作对象相关的属性。python中的一切事物都是对象(都可以使用反射)
  2. hasattr
    判断属性方法是否存在
  3. getattr
    获取属性方法
  4. setattr
    设置属性方法
  5. delattr
    删除属性方法
  6. 使用例子
    class Person:
        sex = 'male'
        def __init__(self,name):
            self.name = name
        def sayHi(self):
            print('hi, '+self.name+'!')
        @classmethod
        def show_Type(cls):
            print(cls.sex)
    hsr = Person('hsr')
    #判断是否存在
    has_arg = hasattr(hsr,'name')
    print(has_arg)
    has_method = hasattr(hsr,'sayHi')
    print(has_method)
    #获取
    name = getattr(hsr,'name')
    print(name)
    func = getattr(hsr,'sayHi')
    func()
    #设置
    setattr(hsr,'name','cool')
    setattr(hsr,'sayHi',lambda self:self.name)
    #删除
    delattr(hsr,'name')
    delattr(hsr,'sayHi')
    
    #反射类、模块的属性和方法相同,将对象换成对应的名字就行
    
    #获取自己模块的名字,使用sys.modules[__name__]

猜你喜欢

转载自www.cnblogs.com/walthwang/p/10402888.html