面向对象之:反射

文章介绍:

1.什么是反射?

2.反射怎么用?

3.什么情况下使用反射?

一.什么是反射?

1.反射定义:
      反射是指程序可以访问。检测和修改它本身状态或行为的一种能力(自省)

2.反射的作用:

  动态获得类的信息.

       让对象告诉我们相关信息(对象拥有属性,方法,已经对象所属的类等)

二.反射怎么用?

1.通过字符串的形式操作对象的相关属性

   四个可以自省的函数:

hasattr(对象名,属性名)
getattr(对象名,属性名)
setattr(对象名,属性名,值)
delattr(对象名,属性名) 

 

class Test:
    name = "小黄人Asa"

    def __init__(self, age):
        self.age = age

    def sleep(self):
        print("你都%d,还在睡懒觉" % self.age)


"""hasattr(对象名,属性名) 检查是否含有某个属性,如果有,返回True,否则返回Flase"""
test=Test(28)
print(hasattr(test, "name"))  # True
print(hasattr(Test, "sleep"))  # True
print(hasattr(Test, "eat"))  # False

"""getattr(对象名,属性名) 获取某个属性"""
test2=Test(30)
print(getattr(test2,"name"))#小黄人Asa
print(getattr(test2,"heigth")) #如果找不到属性,则会报错: 'Test' object has no attribute '123'

"""setattr(对象名,属性名,值)  设置某个属性"""
test3=Test(35)
setattr(test3,"weight",60)
print(test3.__dict__)#{'age': 35, 'weight': 60}

"""delattr(对象名,属性名)  删除某个属性"""
test4=Test(40)
delattr(test4,"age")
print(test4.__dict__)

猜你喜欢

转载自www.cnblogs.com/sl372/p/10912424.html